在多个多边形上对齐块
大家好,有什么方法可以一次性在不同长度、角度的多段线上对齐块。
我已附上样本文件供参考。。。该块可以是任何名称,大多为矩形或类似于dwg中的块。
谢谢
测验图纸 注意,对齐是一个单独的功能,不要将“命令”功能放在前面。 在样例文件中,块是对称的。如果不是这样,会发生什么?
如果pline有两个以上的顶点,会发生什么?
如果一段是弯曲的,会发生什么?
是否应修改现有的块参照(与“对齐”命令一样),还是由程序创建?
在我看来,如果块定义中对象的最大X坐标恰好为1,则更有意义。
我对你的问题的答复如下。
*我的方块都是对称的
*大多数情况下都是否定的,如果是的话,我会采取极端的做法
*没有曲线,只有两个顶点的直线或多段线
*使用当前选择的现有。 好的,在Roy提出了一些有用的问题之后,我们从这里开始:
(defun C:test ( / SS i e pts b enx )
(if
(setq SS
(ssget "_:L-I"
'(
(-4 . "<OR")
(-4 . "<AND") (0 . "LINE") (-4 . "AND>")
(-4 . "<AND") (0 . "LWPOLYLINE") (90 . 2) (70 . 0) (-4 . "AND>")
(-4 . "OR>")
)
)
)
(repeat (setq i (sslength SS))
(setq e (ssname SS (setq i (1- i))))
(setq pts (list (vlax-curve-getStartPoint e) (vlax-curve-getEndPoint e)))
(and
(setq b (ssget "F" pts '((0 . "INSERT") (2 . "G-BIG"))))
(setq b (ssname b 0))
(setq enx (entget b))
(setq enx (subst (cons 10 (apply 'mapcar (cons '(lambda (a b) (/ (+ a b) 2.)) pts))) (assoc 10 enx) enx))
(setq enx (subst (cons 50 (apply 'angle pts)) (assoc 50 enx) enx))
(entmod enx)
)
)
)
(princ)
);| defun |; (vl-load-com) (princ)
只需计算出块的比例。 Grr研究了pline上点的角度的“一阶导数”,适用于曲线等。链测长度就是一个很好的例子。lsp。
PL.lsp上的链测长度
谢谢BIGAL,
这里面有很多有趣的东西。lsp。如果OP没有包括以下内容,我会使用它: Grr水晶球建议我另一个帖子请求想要曲线。很多时候你只会看到“哦,我能吃吗?”
谢谢GRR,我尝试了你的代码,但无法找出问题所在。。
选择后不进行任何插入,插入块时,直线和多段线保持不变。
非常感谢
你回答的时候要小心:
页:
[1]
2