The Buzzard 发表于 2022-7-6 12:30:46

大卫,
 
这是MyDialogs的完整程序。
它包含MyDialogs。dcl和MyDialogs。lsp
加载类型MY后
选择右侧列表中的“我的图像”按钮。
滑动按钮应显示正确的对话框。
单击对话框上显示的位置,图像将更改。
 
请注意,这些图像是用另一个程序创建的,与我发布的程序类似。我觉得我发布的程序好多了。
正如我所指出的,这些图像是用矢量图像创建的。
也许有了完整的程序,你可以解决这个问题。
 
我希望这会有所帮助,
祝你好运
我的对话框。拉链

The Buzzard 发表于 2022-7-6 12:32:55

好的,大卫,
 
我浏览了MyDialogs程序,并将其分解为只运行您关心的程序部分所需的内容。
 
附件是我的。dcl和My。lsp。只需键入我的开始。
现在,您可以查看的编程更少,从而了解是什么使这一功能发挥作用。
我还注意到vector_text的调用位置,如果你真的不需要麻烦或使用My2,你可以注释掉该部分。lsp和My2。dcL。我删除了这个函数,程序在没有vector_文本的情况下也可以运行。
只需键入My2即可开始。
 
我自己也觉得这有点有趣。我想看看是否可以把同样的方法应用到指南针上。lsp。
 
我希望我们在这件事上不要都不知所措,但值得一试。
我的拉链
My2.zip

David Bethel 发表于 2022-7-6 12:36:02

谢谢我今天去看看-大卫

David Bethel 发表于 2022-7-6 12:40:22

我认为最大的区别在于,DDVPOINT使用静态背景幻灯片图像,然后添加白色方向矢量线。它似乎并不是每次点击都会重新绘制整个图像。这对我来说似乎有道理。我只是还不知道他们是怎么做到的-大卫

The Buzzard 发表于 2022-7-6 12:41:29

 
 
这就是我在指南针中所做的。lsp,但因为这是一个图像按钮,除了指示器外,你的图像始终保持不变,所以可以用与我相同的方式设置。函数调用只需要提供正确方向的指示器。我的指南针。lsp使用条件,因为我用一个弹出列表操作它,在这种情况下这不会有用。函数调用是一种方法。
 
以下代码提供了图像在五个方向上更改的坐标。您需要更改此设置,以沿圆周计算16个点。当光标放置在坐标上并单击时,它将触发转到其相关功能,显示要匹配的指针图像。除此之外,还需要16个指针函数。
 
 
;-------------------------------------------------------------------------------
; c:My2
; These images were created using GetVectors.lsp on AutoLISP Exchange
; (URL: http://web2.airmail.net/terrycad)
;-------------------------------------------------------------------------------
(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
;-------------------------------------------------------------------------------

David Bethel 发表于 2022-7-6 12:44:43

我正在慢慢地到达那里。不是真的。DDVPOINT有很多东西需要消化。仍然无法获取输入或向量-大卫
comp1.zip

The Buzzard 发表于 2022-7-6 12:48:59

 
大卫,
 
我在输入方面也遇到了问题。我不知道如何将其应用于圆坐标。

David Bethel 发表于 2022-7-6 12:51:42

秃鹰,
 
下面是is如何绘制向量:
 
(defun ai_ddvp_drx (ang x1 col / a x2 y2)
(setq a (polar (list 0.0 0.0)
                (- (* 2.0 pi) (ai_dtr ang))
                33.0
         )
       x2 (+ x1 (fix (car a)))
       y2 (+ ai_ddvp_by (fix (cadr a)))
)
(start_image "ddvp_image")
(vector_image x1 ai_ddvp_by x2 y2 col)
(end_image)
)

 
 
看起来像角度x_点颜色-大卫

David Bethel 发表于 2022-7-6 12:56:33

好啊
 
找到了一些答案:
[列表]
$x和$y自动返回
无法覆盖矢量图像
必须在新图像中包含方向向量
[/列表]
 
我没有弄明白的是:
[列表]
如何计算图像大小
如何将image_按钮的中心与图像的中心对齐
为什么每件事都是180度(我用了(-pi 2)。。。
[/列表]
 
-大卫
comp2.zip

TimSpangler 发表于 2022-7-6 12:57:47

要获得您需要使用的互动程序的大小
 
(dimx_平铺键);以对话框单位检索平铺的宽度
(dimy_平铺键);以对话框单位检索平铺的高度
 
; 关键参数区分大小写。
 
将为您提供图像按钮的大小,然后根据它们计算您的中心。
页: 1 [2]
查看完整版本: DCL罗盘点类似于