satishrajdev 发表于 2022-7-5 18:01:56

增量属性

大家好,
我有一条10000m的多段线,我想每隔1000m在上面绘制一个属性块。但该区块应以增量绘制
例如
1000米上的DC-1
2000m上的DC-2
3000m上的DC-3
 
间隔可以更改为500m或2000m,但应遵循适当的增量。
 
我需要一个Lisp程序的单词来解决这个问题。。。。plz帮助
查看附图以供参考
测试直流电。图纸

CAD89 发表于 2022-7-5 18:08:02

在这里请尝试以下代码:
 
(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)
 
它只适用于单段多段线!

satishrajdev 发表于 2022-7-5 18:08:59

感谢您的努力
 
这适用于单段多段线,但我通常使用多段多段线。。。。。。。。。

gS7 发表于 2022-7-5 18:13:50

嘿,试试这个
 
注意:在运行此程序之前,请在图纸上插入块“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
                  
               

satishrajdev 发表于 2022-7-5 18:17:27

Thankx Ganesh。。。。。。。。。。。这就是我要找的
 
解决了我的问题

gS7 发表于 2022-7-5 18:19:12

欢迎satishrajdev
 
干杯

Tharwat 发表于 2022-7-5 18:22:58

@甘尼什。
 
请注意,如果多段线从右向左开始,则增量将从右向左

gS7 发表于 2022-7-5 18:26:15

在那种情况下如何处理这个问题?

Tharwat 发表于 2022-7-5 18:29:05

假设我们讨论的是一条多段线,其起点在右侧,终点在左侧,或者相反。
 
你可以检查两个点的X坐标,其中一个比另一个大或小,这取决于你可以
相应地插入块定义。

gS7 发表于 2022-7-5 18:31:43

我不明白你的意思。。我请求你删除我的密码谢谢
页: [1] 2
查看完整版本: 增量属性