lamensterms 发表于 2022-7-5 22:45:28

设置Ord位置的例程

嘿伙计们,
 
只是想知道是否有人可以帮我得到以下代码工作?
 
(DEFUN C:fRD ()
(prompt "\n Select DIMENSIONS to fix offset...")
(Setq ss (ssget '((0 . "DIMENSION") (-4 . "<OR") (70 . 38) (70 . 102) (70 . 166) (-4 . "OR>"))))

(setq gpt1 (getpoint))

(setq num (sslength ss));n° object
(setq con 0)
(repeat num
(setq ent3A (ssname ss con))
(setq con (1+ con))

(setq vObje (vlax-ename->vla-object ent3a))
             (vlax-put-property vObje 'TEXTPOSITIONY (CADR GPT1))
         )


(princ)
)
 
目的是能够选择一组坐标标注,然后选择一个点,该新点的Y值将分配给所选坐标标注的“文字位置Y”。。。我希望这有意义。
 
我遇到的问题是我不知道TEXTPOSITIONY的正确变量名,所以我想知道是否有人可以启发我?或者,如果有人知道一个资源,其中列出了所有活动X变量,那也太好了。
 
非常感谢您的帮助,期待回音。
 

Tharwat 发表于 2022-7-5 22:54:46

更换此零件。
 

(vlax-put-property vObje 'TEXTPOSITION (vlax-3d-point (list (car (cdr (assoc 14 (entget ent3A)))) (cadr gpt1))))

 
养成将变量本地化的习惯,以避免在值-变量之间进行干预。

lamensterms 发表于 2022-7-5 23:04:46

啊,太棒了,非常感谢你的Tharwat。是的,这是我的一个坏习惯,不本地化的变量,我会这样做,虽然哈哈。
 
再次感谢您的帮助。

Tharwat 发表于 2022-7-5 23:07:45

 
不客气,我很乐意帮忙

lamensterms 发表于 2022-7-5 23:12:43

你好,塔瓦,
 
经过更多的测试,我已经让代码完全按照我想要的方式工作了——再次感谢你的帮助。
 
(DEFUN C:fRD ( / ss gpt1 num con ent3A vObje )
(command "ucs" "W")
(prompt "\n Select DIMENSIONS to fix offset...")
(if (Setq ss (ssget '((0 . "DIMENSION") (-4 . "<OR") (70 . 38) (70 . 102) (70 . 166) (70 . 230) (-4 . "OR>"))))
(progn
(setq gpt1 (getpoint))

(setq num (sslength ss));n° object
(setq con 0)
(repeat num
(setq ent3A (ssname ss con))
(setq con (1+ con))

(setq vObje (vlax-ename->vla-object ent3a))
             (vlax-put-property vObje 'TEXTPOSITION (vlax-3d-point (list (car (cdr (assoc 11 (entget ent3A)))) (cadr gpt1))))
         )
)
)
(command "ucs" "p")
(princ)
)
 
我所做的一个改变是将ASSOC与DXF代码11一起使用,因为这似乎在文本的基点方面产生了更好的结果。你觉得这样对吗?

BIGAL 发表于 2022-7-5 23:24:30

在对象上使用dump选项可以显示您要查找的变量名,通常与属性中显示的变量名略有不同。
 
;   text移动=2
;   text外部对齐=0
;   TextOverride=“”
;   text位置=(351.838 301.785 0.0)
;   TextPrefix=“”
;   text旋转=0.0
;   TextStyle=“ISO2.5”
 
 

;;; Dump all methods and properties for selected objects            ;
;;;===================================================================;
;;; DumpIt                                                            ;
;;;-------------------------------------------------------------------;
;;;===================================================================;
(defun C:DumpIt ( / ent)
(while (setq ent (entsel))
   (vlax-Dump-Object
   (vlax-Ename->Vla-Object (car ent))
   )
)
(princ)
)

Tharwat 发表于 2022-7-5 23:31:32

 
不客气。
 
是的,为了确认我的方法和你的方法,请看这里。
 
BIGAL,要同时拥有这些方法,您应该将T添加到vlax dump对象函数。请参见此处。

BIGAL 发表于 2022-7-5 23:33:16

谢谢Tharwat修补了我从中复制的版本,并添加了T以供将来使用。

lamensterms 发表于 2022-7-5 23:42:14

太棒了,谢谢塔瓦和比格尔的帮助。

Tharwat 发表于 2022-7-5 23:51:14

很乐意帮助大家。
页: [1]
查看完整版本: 设置Ord位置的例程