乐筑天下

搜索
欢迎各位开发者和用户入驻本平台 尊重版权,从我做起,拒绝盗版,拒绝倒卖 签到、发布资源、邀请好友注册,可以获得银币 请注意保管好自己的密码,避免账户资金被盗
查看: 22|回复: 19

[编程交流] 增量属性

[复制链接]

55

主题

402

帖子

357

银币

后起之秀

Rank: 20Rank: 20Rank: 20Rank: 20

铜币
274
发表于 2022-7-5 18:01:56 | 显示全部楼层 |阅读模式
大家好,
我有一条10000m的多段线,我想每隔1000m在上面绘制一个属性块。但该区块应以增量绘制
例如
1000米上的DC-1
2000m上的DC-2
3000m上的DC-3
 
间隔可以更改为500m或2000m,但应遵循适当的增量。
 
我需要一个Lisp程序的单词来解决这个问题。。。。plz帮助
查看附图以供参考
测试直流电。图纸
回复

使用道具 举报

3

主题

24

帖子

21

银币

初来乍到

Rank: 1

铜币
15
发表于 2022-7-5 18:08:02 | 显示全部楼层
在这里请尝试以下代码:
 
  1. (defun c:inat
  2.       (/ cme pli plis inc ptli stpt lapt dis ang noi icl icn cnt)
  3. (setq cme (getvar 'cmdecho)
  4. osm (getvar 'osmode)
  5. )
  6. (setvar 'cmdecho 0)
  7. (setvar 'osmode 0)
  8. (setq        pli  (car (entsel))
  9. plis (entget pli)
  10. inc  (getreal "\nSet increment value: ")
  11. ptli (list)
  12. )
  13. (foreach ip plis
  14.    (if        (= (car ip) 10)
  15.      (setq ptli
  16.      (append ptli
  17.              (list
  18.                (cdr ip)
  19.              )
  20.      )
  21.      )
  22.    )
  23. )
  24. (setq        stpt (car ptli)
  25. lapt (last ptli)
  26. dis  (distance stpt lapt)
  27. ang  (angle stpt lapt)
  28. noi  (fix (/ dis inc))
  29. icl  (list)
  30. icn  1
  31. )
  32. (repeat (1- noi)
  33.    (setq icl
  34.    (append icl
  35.            (list
  36.              (polar stpt ang (* inc icn))
  37.            )
  38.    )
  39.    )
  40.    (setq icn (1+ icn))
  41. )
  42. (setq cnt 1)
  43. (foreach blip        icl
  44.    (command "-insert"
  45.      "DC"
  46.      blip
  47.      ""
  48.      ""
  49.      (strcat "DC-"
  50.              (if (> cnt 9)
  51.                (itoa cnt)
  52.                (strcat "0" (itoa cnt))
  53.              )
  54.      )
  55.    )
  56.    (princ)
  57.    (setq cnt (1+ cnt))
  58. )
  59. (setvar 'cmdecho cme)
  60. (setvar 'osmode osm)
  61. (princ)
  62. )
  63. (princ)

 
它只适用于单段多段线!
回复

使用道具 举报

55

主题

402

帖子

357

银币

后起之秀

Rank: 20Rank: 20Rank: 20Rank: 20

铜币
274
发表于 2022-7-5 18:08:59 | 显示全部楼层
感谢您的努力
 
这适用于单段多段线,但我通常使用多段多段线。。。。。。。。。
回复

使用道具 举报

gS7

35

主题

244

帖子

212

银币

初露锋芒

Rank: 3Rank: 3Rank: 3

铜币
180
发表于 2022-7-5 18:13:50 | 显示全部楼层
嘿,试试这个
 
注意:在运行此程序之前,请在图纸上插入块“DC”
 
  1. (defun c:Test (/ cmh ss i cnt n l blockname)
  2.    (vl-load-com)
  3.    (setq cmh(getvar 'cmdecho))
  4.   [color="blue"] (setq att (getvar 'attreq))[/color]
  5. (setvar 'cmdecho 0)
  6.        [color="blue"](setvar 'attreq 1)[/color]
  7.    (if (setq ss(car (entsel "\nPick Polyline:")))
  8.     (progn
  9.             (setq i (getreal "\nIncrement Distance:"))
  10.                 (setq n i)
  11.                 (setq cnt 1)
  12.                 (setq l (vlax-curve-getdistatparam ss (vlax-curve-getendparam ss)))
  13.                 (repeat (fix(/ l i))
  14.                     (setq npt(vlax-curve-getpointatdist ss i))
  15.                (if (> cnt 9)
  16.                             (setq Blockname (strcat "DC-"(rtos cnt 2 0)))
  17.                                 (setq Blockname (strcat "DC-0"(rtos cnt 2 0)))
  18.                         )
  19.                         (command "_INSERT"[color="blue"] "DC"[/color] npt "" "" blockname)
  20.             (setq cnt(1+ cnt))
  21.                         (setq i(+ n i))
  22.                 )
  23.         )
  24.    )
  25. (setvar 'cmdecho cmh)
  26.        [color="blue"](setvar 'attreq att)[/color]
  27. (princ)
  28. );defun
  29.                     
  30.                
回复

使用道具 举报

55

主题

402

帖子

357

银币

后起之秀

Rank: 20Rank: 20Rank: 20Rank: 20

铜币
274
发表于 2022-7-5 18:17:27 | 显示全部楼层
Thankx Ganesh。。。。。。。。。。。这就是我要找的
 
解决了我的问题
回复

使用道具 举报

gS7

35

主题

244

帖子

212

银币

初露锋芒

Rank: 3Rank: 3Rank: 3

铜币
180
发表于 2022-7-5 18:19:12 | 显示全部楼层
欢迎satishrajdev
 
干杯
回复

使用道具 举报

63

主题

6297

帖子

6283

银币

后起之秀

Rank: 20Rank: 20Rank: 20Rank: 20

铜币
358
发表于 2022-7-5 18:22:58 | 显示全部楼层
@甘尼什。
 
请注意,如果多段线从右向左开始,则增量将从右向左
回复

使用道具 举报

gS7

35

主题

244

帖子

212

银币

初露锋芒

Rank: 3Rank: 3Rank: 3

铜币
180
发表于 2022-7-5 18:26:15 | 显示全部楼层
在那种情况下如何处理这个问题?
回复

使用道具 举报

63

主题

6297

帖子

6283

银币

后起之秀

Rank: 20Rank: 20Rank: 20Rank: 20

铜币
358
发表于 2022-7-5 18:29:05 | 显示全部楼层
假设我们讨论的是一条多段线,其起点在右侧,终点在左侧,或者相反。
 
你可以检查两个点的X坐标,其中一个比另一个大或小,这取决于你可以
相应地插入块定义。
回复

使用道具 举报

gS7

35

主题

244

帖子

212

银币

初露锋芒

Rank: 3Rank: 3Rank: 3

铜币
180
发表于 2022-7-5 18:31:43 | 显示全部楼层
我不明白你的意思。。我请求你删除我的密码谢谢
回复

使用道具 举报

发表回复

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

  • 微信公众平台

  • 扫描访问手机版

  • 点击图片下载手机App

QQ|关于我们|小黑屋|乐筑天下 繁体中文

GMT+8, 2025-3-13 00:11 , Processed in 0.935833 second(s), 72 queries .

© 2020-2025 乐筑天下

联系客服 关注微信 帮助中心 下载APP 返回顶部 返回列表