增量属性
大家好,我有一条10000m的多段线,我想每隔1000m在上面绘制一个属性块。但该区块应以增量绘制
例如
1000米上的DC-1
2000m上的DC-2
3000m上的DC-3
间隔可以更改为500m或2000m,但应遵循适当的增量。
我需要一个Lisp程序的单词来解决这个问题。。。。plz帮助
查看附图以供参考
测试直流电。图纸 在这里请尝试以下代码:
(defun c:inat
(/ cme pli plis inc ptli stpt lapt dis ang noi icl icn cnt)
(setq cme (getvar 'cmdecho)
osm (getvar 'osmode)
)
(setvar 'cmdecho 0)
(setvar 'osmode 0)
(setq pli(car (entsel))
plis (entget pli)
inc(getreal "\nSet increment value: ")
ptli (list)
)
(foreach ip plis
(if (= (car ip) 10)
(setq ptli
(append ptli
(list
(cdr ip)
)
)
)
)
)
(setq stpt (car ptli)
lapt (last ptli)
dis(distance stpt lapt)
ang(angle stpt lapt)
noi(fix (/ dis inc))
icl(list)
icn1
)
(repeat (1- noi)
(setq icl
(append icl
(list
(polar stpt ang (* inc icn))
)
)
)
(setq icn (1+ icn))
)
(setq cnt 1)
(foreach blip icl
(command "-insert"
"DC"
blip
""
""
(strcat "DC-"
(if (> cnt 9)
(itoa cnt)
(strcat "0" (itoa cnt))
)
)
)
(princ)
(setq cnt (1+ cnt))
)
(setvar 'cmdecho cme)
(setvar 'osmode osm)
(princ)
)
(princ)
它只适用于单段多段线! 感谢您的努力
这适用于单段多段线,但我通常使用多段多段线。。。。。。。。。 嘿,试试这个
注意:在运行此程序之前,请在图纸上插入块“DC”
(defun c:Test (/ cmh ss i cnt n l blockname)
(vl-load-com)
(setq cmh(getvar 'cmdecho))
(setq att (getvar 'attreq))
(setvar 'cmdecho 0)
(setvar 'attreq 1)
(if (setq ss(car (entsel "\nPick Polyline:")))
(progn
(setq i (getreal "\nIncrement Distance:"))
(setq n i)
(setq cnt 1)
(setq l (vlax-curve-getdistatparam ss (vlax-curve-getendparam ss)))
(repeat (fix(/ l i))
(setq npt(vlax-curve-getpointatdist ss i))
(if (> cnt 9)
(setq Blockname (strcat "DC-"(rtos cnt 2 0)))
(setq Blockname (strcat "DC-0"(rtos cnt 2 0)))
)
(command "_INSERT" "DC" npt "" "" blockname)
(setq cnt(1+ cnt))
(setq i(+ n i))
)
)
)
(setvar 'cmdecho cmh)
(setvar 'attreq att)
(princ)
);defun
Thankx Ganesh。。。。。。。。。。。这就是我要找的
解决了我的问题 欢迎satishrajdev
干杯 @甘尼什。
请注意,如果多段线从右向左开始,则增量将从右向左 在那种情况下如何处理这个问题? 假设我们讨论的是一条多段线,其起点在右侧,终点在左侧,或者相反。
你可以检查两个点的X坐标,其中一个比另一个大或小,这取决于你可以
相应地插入块定义。 我不明白你的意思。。我请求你删除我的密码谢谢
页:
[1]
2