移动动态文本属性
我试着让一些包含文本的块垂直于用户选择的线移动,这样文本就可以正确地排列。附件是我正在使用的代码和示例dwg。我可以选择块和线,但什么也没有发生。由于块中的参数是一个点,它需要一个X和Y值,我认为这就是问题所在。
EXALU_Main-0001。LSP
纤维标记试验。图纸 有人有什么建议吗? 我不知道你想做什么。这不是可以只使用Align参数就可以做到的吗? 这些是带有移动参数的动态块,但使用了大约30个这样的块。我画了一条参考线,我想让文本在那里对齐,我想做的是让这些块的文本移动到那条线,而不必单独移动每个块,因为这可能会有点耗时。
试试这个:
唯一的问题是,参考不是一条线,而是一个动态块。
(defunc:AlgnDyn (/ adoc a baseX BaseXBlock MoveXVal MoveXBlock)
;;pbe Apr2011;;
(vl-load-com)
(setq adoc (vla-get-activedocument (vlax-get-acad-object)))
(setq a (car (entsel "\nSelect Reference Dynamic Block:")))
(setq baseX
(variant-value
(vla-get-value
(nth
15
(vlax-invoke
(vlax-ename->vla-object a)
'GetDynamicBlockProperties
)
)
)
)
BaseXBlock
(car (cdr (assoc 10 (entget a))))
)
(setq MoveXBlock
(mapcar
'(lambda (j) (car (cdr (assoc 10 (entget j)))))
(vl-remove-if
'listp
(mapcar
'cadr
(ssnamex (ssget ":L" '((0 . "INSERT") (66 . 1))))
)
)
)
)
(vlax-for
Dblks (vla-get-activeselectionset adoc)
(setq MoveXVal
(car
(vlax-safearray->list
(variant-value (vla-get-insertionpoint Dblks))
)
)
)
(vla-put-value
(nth 15 (vlax-invoke Dblks 'GetDynamicBlockProperties))
(+ (- BaseXBlock MoveXVal) baseX)
)
)
(princ)
)
用法:
命令:AlgnDyn
选择参考动态块:
选择对象:
这段代码专门针对您的区块(光纤标记管sta)编写
希望这有帮助
谢谢,这是一个开始。我对两件事很好奇。
1.为了计算我们使用的所有区块,我使用以下代码:
这将解释所有这些块,并且不一定基于光纤块,而是基于任何块?
2.如果页面的视口处于除0以外的任何角度,它会将文本对齐到一个角度。我假设这意味着代码中需要一个trans,但我现在对trans函数知之甚少。
哇。我没指望,很好,哦,诺托。
至于问题1,如果您指的是文本位置,则可以修改代码以搜索PropertyName,而不是代码上所示的第15个(定位MoveX)。这就是为什么我说它只适用于这个区块,其中第15个(实际上是16个)对于所有具有相同名称的区块都是相同的。
现在对于trans,我需要回复你,快结束了。
我可能会完全重写代码,这样它不仅适用于Y的X位置。
我很肯定这里会有人打败我。
块是否旋转? 块本身在插入时旋转。之后,文本(定位)被打开,并且有一个旋转参数用于旋转文本,通常以当前视口比例的90度旋转,以便将文本写入页面,并从右侧读取。希望能回答这个问题。。。
可以用旋转的块发布图形文件吗
页:
[1]
2