这就是我在指南针中所做的。lsp,但因为这是一个图像按钮,除了指示器外,你的图像始终保持不变,所以可以用与我相同的方式设置。函数调用只需要提供正确方向的指示器。我的指南针。lsp使用条件,因为我用一个弹出列表操作它,在这种情况下这不会有用。函数调用是一种方法。
以下代码提供了图像在五个方向上更改的坐标。您需要更改此设置,以沿圆周计算16个点。当光标放置在坐标上并单击时,它将触发转到其相关功能,显示要匹配的指针图像。除此之外,还需要16个指针函数。
- ;-------------------------------------------------------------------------------
- ; c:My2
- ; These images were created using GetVectors.lsp on AutoLISP Exchange
- ; (URL: [url]http://web2.airmail.net/terrycad[/url])
- ;-------------------------------------------------------------------------------
- (defun c:My2 (/ Dcl_Id% Show_Image:)
- (princ "\nMyImageButton")(princ)
- ; Show_Image: ----------------------------------------------------------------
- (defun Show_Image: (/ Ang CenPt Dist~ PickPt X# Y#)
- (start_image "Image1")
- (setq X# (dimx_tile "Image1"))
- (setq Y# (dimy_tile "Image1"))
- (end_image)
- (setq CenPt (list (/ X# 2)(/ Y# 2))
- PickPt (list $x $y)
- Ang (angle CenPt PickPt)
- Dist~ (distance CenPt PickPt)
- ) ;setq
- (cond
- ((< Dist~ (/ Y# 4)) (Front_View)) ;*Included
- ((< Ang (* pi 0.25))(Right_View)) ;*Included
- ((< Ang (* pi 0.75))(Bottom_View));*Included
- ((< Ang (* pi 1.25))(Left_View)) ;*Included
- ((< Ang (* pi 1.75))(Top_View)) ;*Included
- (t (Right_View))
- ) ;cond
- ) ;defun Show_Image:
- ;-----------------------------------------------------------------------------
- ; Load Dialog
- (setq Dcl_Id% (load_dialog "My2.dcl"))
- (new_dialog "MyImageButton" Dcl_Id%)
- ; Set Dialog Initial Settings
- (set_tile "Title" " My Image Button")
- (set_tile "Text1" "Pick arrows to change views.")
- (Front_View);*Included
- ; Dialog Actions
- (action_tile "Image1" "(Show_Image:)")
- (start_dialog)
- ; Unload Dialog
- (unload_dialog Dcl_Id%)
- (princ)
- );defun c:MyImageButton
- ;-------------------------------------------------------------------------------
|