iCAx开思网

标题: 同步電腦系統時間 [打印本页]

作者: ryouss    时间: 2013-12-24 23:35
标题: 同步電腦系統時間
請幫忙測試,時鐘是否能夠同步電腦系統時間
宏裡面的繁體字須更改為簡体,並對應秒分時三針的角度尺寸(請解除隱藏顯示)
' ******************************************************************************
' macro recorded on 12/24/13 by lsc
' 功能:同步電腦系統時間
'
' 操作說明:
' 1. 打開 now time.SLDDRW 檔.
' 2. 執行 Macro1.swp 巨集(宏)
' 3. 須停止執行巨集(宏)時,請同時按下 Ctrl-Pause Break 兩鍵.
'
' ******************************************************************************
Dim swApp As Object
Dim Part As Object
Sub main()
Set swApp = Application.SldWorks
Set Part = swApp.ActiveDoc
Dim sec_rad As Double
Dim myDimension_s As Object
Dim myDimension_m As Object
Dim myDimension_h As Object
Set myDimension_s = Part.Parameter("D8@草圖1") '對應工程圖秒針角度值
Set myDimension_m = Part.Parameter("D9@草圖1") '對應工程圖分針角度值
Set myDimension_h = Part.Parameter("D10@草圖1") '對應工程圖時針角度值
pi = 4 * Atn(1)
sec = Second(Time)
sec_rad = sec * pi / 30
myDimension_s.SystemValue = sec_rad '執行程式起始的系統秒
While hor < 13
    sec = Second(Time) '系統秒
    min = Minute(Time) '系統分
    hor = Hour(Time) Mod 12 '系統時(12小時制)
    sec_rad = sec * pi / 30 '秒針轉動弧度
    min_rad = min * pi / 30 '分針轉動弧度
    hor_rad = hor * pi / 6 + (min * pi / 360) '時針轉動弧度
    myDimension_s.SystemValue = sec_rad
    myDimension_m.SystemValue = min_rad
    myDimension_h.SystemValue = hor_rad
    Set myModelView = Part.ActiveView
    myModelView.RotateAboutCenter 0, 0
Wend
End Sub

[attach]1190760[/attach]
[attach]1190762[/attach][2012版]
[attach]1190761[/attach]





该贴已经同步到 ryouss的微博
作者: Francis    时间: 2013-12-25 00:47
試過了{:soso_e189:},能同步{:soso_e179:}
[attach]1190766[/attach]
作者: ryouss    时间: 2013-12-25 08:13
Francis 发表于 2013-12-25 00:47
試過了,能同步

謝謝悶大的測試及評分,
本例碰到的問題是0和180度不知道如何處理較好.

作者: wutong490    时间: 2013-12-25 08:27
{:soso_e179:}



作者: gt.adan    时间: 2013-12-25 10:13
很有趣的思維~經指導後測試成功,謝謝梁兄分享!{:soso_e181:}

[attach]1190769[/attach]

作者: Francis    时间: 2013-12-25 12:46
本帖最后由 Francis 于 2013-12-25 12:48 编辑
ryouss 发表于 2013-12-25 08:13
謝謝悶大的測試及評分,
本例碰到的問題是0和180度不知道如何處理較好.

的確,角度限制會出現180°跳動的情況,附件略作如下修改:
1. 弧長代替角度,並修改了內碼配合
2. 新增圖層放置建構圖元,再隱藏該圖層
3. 呼叫Windows API的延遲功能,再放到循環裡,從而減小消耗系統資源。


作者: gt.adan    时间: 2013-12-25 13:02
悶大修改後的宏可以直接抓取系統時間,無需手動調整。{:soso_e179:}

[attach]1190791[/attach]

作者: drinklee    时间: 2013-12-25 13:06
有趣的建模。。。

作者: ryouss    时间: 2013-12-25 13:27
Francis 发表于 2013-12-25 12:46
的確,角度限制會出現180°跳動的情況,附件略作如下修改:
1. 弧長代替角度,並修改了內碼配合
2. 新增 ...

謝謝指導了{:soso_e179:}{:soso_e183:}

作者: ryouss    时间: 2013-12-25 15:06
本帖最后由 ryouss 于 2013-12-25 15:07 编辑
Francis 发表于 2013-12-25 12:46
的確,角度限制會出現180°跳動的情況,附件略作如下修改:
1. 弧長代替角度,並修改了內碼配合
2. 新增 ...

測試後有兩個問題
1. 中斷再執行,有時會如下圖所示,執行宏就會出錯?
[attach]1190800[/attach]

2.Debug.Print 的使用不瞭解,所謂的 " [立即] 視窗 " 是指 vba 偵錯的 " 監看視窗 " 嗎?但是又看不到變數值!
[attach]1190801[/attach]

作者: 清水飯糰    时间: 2013-12-25 15:25
厉害啊!
作者: gaowengang    时间: 2013-12-25 15:46
顶梁大!

作者: Francis    时间: 2013-12-25 16:05
ryouss 发表于 2013-12-25 15:06
測試後有兩個問題
1. 中斷再執行,有時會如下圖所示,執行宏就會出錯?

1. 簡體的問題,草圖名稱不對。
2. 立即窗口可在功能表檢視中開啟。


作者: ryouss    时间: 2013-12-25 16:40
Francis 发表于 2013-12-25 16:05
1. 簡體的問題,草圖名稱不對。
2. 立即窗口可在功能表檢視中開啟。

受教了,非常感謝!

作者: 22553711    时间: 2013-12-25 19:06
有没有扫盲版教程啊????
{:soso_e141:}
作者: ryouss    时间: 2013-12-25 19:42
22553711 发表于 2013-12-25 19:06
有没有扫盲版教程啊????

什麼是扫盲版??{:soso_e132:}

作者: 22553711    时间: 2013-12-25 21:21
ryouss 发表于 2013-12-25 19:42
什麼是扫盲版??

就是能让我们这些宏盲入门的教程。
看着闷大、梁大玩得这么有趣,眼热啊

作者: ryouss    时间: 2013-12-25 22:08
22553711 发表于 2013-12-25 21:21
就是能让我们这些宏盲入门的教程。
看着闷大、梁大玩得这么有趣,眼热啊

建議試著了解編程的每個指令,在vba窗口按 F1鍵,可以查到指令的用法例子,有問題提出討論,
我也是一個個指令學習過來的,指令瞭解了,最精彩的是如何構思把指令拼成你想要的結果,
一道努力了!{:soso_e189:}

作者: Francis    时间: 2013-12-25 23:44
gt.adan 发表于 2013-12-25 13:02
悶大修改後的宏可以直接抓取系統時間,無需手動調整。

感謝蛋大測試。{:soso_e183:}

看到蛋大的動畫中的秒針在12時位置有跳格,才想起弧長不能是零。
暫時想到在宏內的sec_rad = 0.046 * (sec * pi / 30)再加多一點點(例如0.000001)避開零值。


作者: gt.adan    时间: 2013-12-26 00:37
Francis 发表于 2013-12-25 23:44
感謝蛋大測試。

看到蛋大的動畫中的秒針在12時位置有跳格,才想起弧長不能是零。

報告悶大,如您所說的設置經測試後,
可以解決59"~01"的停滯問題,
但是其他秒數會有一次跳動2秒的問題。{:soso_e181:}
作者: ryouss    时间: 2013-12-26 10:34
本帖最后由 ryouss 于 2013-12-26 10:38 编辑
Francis 发表于 2013-12-25 23:44
感謝蛋大測試。

看到蛋大的動畫中的秒針在12時位置有跳格,才想起弧長不能是零。

另外可以解決在一個宏,自訂表單(userform)的Flash時間和工程圖的時間同步動作嗎?
目前只能作到執行宏時只有工程圖時間動作,中斷(按下Ctrl-Pause Break兩鍵)時只有自訂表單(userform)的Flash時間動作.
[attach]1190844[/attach]

作者: ryouss    时间: 2013-12-26 13:43
本帖最后由 ryouss 于 2013-12-26 13:58 编辑
gt.adan 发表于 2013-12-26 00:37
報告悶大,如您所說的設置經測試後,
可以解決59"~01"的停滯問題,
但是其他秒數會有一次跳動2秒的問題 ...

1. 解決59"~01"的停滯問題
   試試在   Debug.Print hor_rad 之下,加入如下:   
    If sec_rad = 0 Then
    sec_rad = 0.0001
    End If

2. 其他跳格,可以試試,把如下去除,再不行也把 sleep 去掉看看.
    'Debug.Print sec_rad
    'Debug.Print min_rad
    'Debug.Print hor_rad






欢迎光临 iCAx开思网 (https://www.icax.net/) Powered by Discuz! X3.3