mostafa badran 发表于 2022-7-5 23:13:04

将块添加到多段线

大家好,
我可以通过lisp将块作为附件添加到多段线吗?
我想选择所有多段线,然后在选定的多段线处插入一个块。
谢谢你的帮助。

测试添加块。图纸

samifox 发表于 2022-7-5 23:20:19

当被要求指定数字类型B并键入块的名称时,可以使用measue或devide命令

ymg3 发表于 2022-7-5 23:26:04

莫斯塔法,
 
首先,您需要修改块的插入点
处于箭头的尖端。
 
其次,可以使用vlax曲线函数来获取多段线的中点。
 

(defun c:test ()
(while(setq ent (car (entsel "\nSelect polyline:")))
   (setq d (/ (vlax-curve-getDistAtParam ent (vlax-curve-getEndParam ent)) 2.0)
         p (vlax-curve-getPointAtDist ent d)
   )
   (vl-cmdf "._insert" "WIRE-TYPE" p "" "" "")
)
)   

 
ymg公司

mostafa badran 发表于 2022-7-5 23:34:38

感谢ymg3的回复,我不知道是否可以修改lisp以使用ssget函数插入块。
这个帖子可能会有帮助。
http://www.cadtutor.net/forum/showthread.php?48143-LISP查找多条直线的中点&p=327737&viewfull=1#post327737

ymg3 发表于 2022-7-5 23:39:31


(defun c:test (/ d e i p ss)
(prompt "\nSelect polyline: ")
(while(setq ss (ssget '((0 . "LWPOLYLINE")(8 . "00-BT-PA-WIRE"))))
   (repeat (setq i (sslength ss))
      (setq e (ssname ss (setq i (1- i)))
            d (/ (vlax-curve-getDistAtParam e (vlax-curve-getEndParam e)) 2.0)
            p (vlax-curve-getPointAtDist e d)
      )
      (vl-cmdf "._insert" "WIRE-TYPE" p "" "" "")
   )
   (prompt "\nSelect polyline: ")
)
(princ)
)   

 
莫斯塔法,
 
你是资深会员,我相信你能做到。
 
一定要研究代码,试着理解发生了什么。

BIGAL 发表于 2022-7-5 23:43:49

 
Mostafa Autocad帮助的目的是,如果您在lisp下查找ssget并使用选择过滤器,您将很快找到答案。ssget的一部分是了解如何选择过滤器,这些可能相当复杂。键入图层颜色线型x值。

mostafa badran 发表于 2022-7-5 23:53:20

谢谢你的努力,
谢谢你的关心让我学习,我真的很努力,但我是外地,然后我请你做它来学习。
再次感谢。

mostafa badran 发表于 2022-7-5 23:56:53

好啊
比加尔我知道ssget安静,但缺少的部分是我真的尝试学习感谢比加尔的兴趣。

Costinbos77 发表于 2022-7-6 00:01:40

用点选择点,你也可以用它。它的优点是街区可以坐在你想坐的地方。它不依赖于:实体类型、图层、颜色等,
 
 
3

ymg3 发表于 2022-7-6 00:07:49

莫斯塔法,
 
 
在重复循环开始时,我们将变量i设置为选择集的长度(repeat(setq i(sslength ss))
 
然后在循环中,我们读取构成选择集的每个ename,从索引i减1处的最后一个ename开始。
每次循环都会减少1。
 
假设你的sslength等于5。所以你读了ename(ssname ss 4)。。3.2.1 ad最终为0。
 
ymg公司
页: [1] 2
查看完整版本: 将块添加到多段线