pxt2001 发表于 2023-2-6 21:39:29

请教acet-ss-drag-move函数如何响应用户输入

(acet-ss-drag-move ss pt [prompt][highlight [cursor]])据说可以响应用户输入,但是一直没有测试成功, 例如以下代码测试不成功,请教问题在哪里?(initget 128 "B")(acet-ss-drag-move (ssget)(getpoint "\nbasePt:") "\nChoose Location ... ")

liuhe 发表于 2023-2-7 08:37:29

(DEFUN C:E1 ()
(VL-LOAD-COM)
(SETQ        SS (SSGET)
        PT (GETPOINT "\n指定基点")
)
(LY:ROTATE SS PT 0)
;;;(LY:MOVE SS PT 2 )
;;;(LY:SCALE SS PT 1 )
)
(DEFUN LY:ROTATE (SSX P cur / I E ANG)
(SETQ        ANG (ACET-SS-DRAG-ROTATE SSX P "\n指定旋转角度" cur)
        I   0       
)
(PRINC (TYPE ANG))
(foreach E (acet-ss-to-list ssx)
    (VLA-ROTATE
      (VLAX-ENAME->VLA-OBJECT E)
      (VLAX-3D-POINT P)
      ANG
    )
)

;;;(REPEAT (SSLENGTH SSX)
;;;    (SETQ E (SSNAME SSX I))
;;;    (VLA-ROTATE
;;;      (VLAX-ENAME->VLA-OBJECT E)
;;;      (VLAX-3D-POINT P)
;;;      ANG
;;;    )
;;;    (SETQ I (1+ I))
;;;)
(princ)
)
(DEFUN LY:MOVE (SSX P1 cur / I E ANG)
(SETQ        P2 (ACET-SS-DRAG-move SSX P1 "\n指定第二个点" cur)
        I0
)
(foreach E (acet-ss-to-list ssx)
    (VLA-MOVE
      (VLAX-ENAME->VLA-OBJECT E)
      (VLAX-3D-POINT P1)
      (VLAX-3D-POINT P2)
    )
)
;;;(REPEAT (SSLENGTH SSX)
;;;    (SETQ E (SSNAME SSX I))
;;;    (VLA-MOVE
;;;      (VLAX-ENAME->VLA-OBJECT E)
;;;      (VLAX-3D-POINT P1)
;;;      (VLAX-3D-POINT P2)
;;;    )
;;;    (SETQ I (1+ I))
;;;)
(princ)
)

;;;
;;;(DEFUN LY:SCALE        (SSX P1 cur / I E N)
;;;;;;;;;缩放无动态显示
;;;(SETQ        N (ACET-SS-DRAG-scale SSX P1 "\n指定比例因子" cur)
;;;        I 0
;;;)
;;;(PRINC (TYPE N))
;;;;;;(REPEAT (SSLENGTH SSX)
;;;;;;    (SETQ E (SSNAME SSX I))
;;;;;;    (vla-ScaleEntity
;;;;;;      (VLAX-ENAME->VLA-OBJECT E)
;;;;;;      (VLAX-3D-POINT P1)
;;;;;;      (RTOS N 2 0)
;;;;;;    )
;;;;;;    (SETQ I (1+ I))
;;;;;;)
;;;(princ)
;;;)


以前我研究的代码,都是可以运行的,缩放没法看到动态过程

pxt2001 发表于 2023-2-7 12:11:53

liuhe 发表于 2023-2-7 08:37
以前我研究的代码,都是可以运行的,缩放没法看到动态过程

您可能没有明白我表达的意思,我希望的是在acet-ss-drag-move动态拖动选择集过程中,
如果鼠标取点,可以正常执行。但如果输入自定义的关键字,无法返回关键字字符串。acet-ss-drag-move说明书提到可以配合initget设置关键字,但又没有给出相应的例子。

masterlong 发表于 2023-2-7 15:47:19

和get类函数完全一样的用法

注意一下
如果加载了高飞鸟的DYN函数
那么返回值区别大小写

pxt2001 发表于 2023-2-7 16:46:31

masterlong 发表于 2023-2-7 15:47
和get类函数完全一样的用法

注意一下


经过尝试,搞定,感谢指点。
(Setq Ss   (Ssget)
      Basept (Getpoint "\nBasePt:")
)
(Initget "B")
(Setq Pt (Acet-Ss-Drag-Move Ss BasePt "\n选择点[选项(B)]:"))
页: [1]
查看完整版本: 请教acet-ss-drag-move函数如何响应用户输入