明经CAD社区

 找回密码
 注册

QQ登录

只需一步,快速开始

搜索
查看: 566|回复: 0

[提问] 截取多段线其中几段并偏移

[复制链接]
发表于 2024-2-29 22:15:11 | 显示全部楼层 |阅读模式
现在有个小问题,我有一段5000m的含弧多段线,需要截取500到1000之间的线段,并向两边偏移8m,1500到2000之间的线段并向两边便宜6m,2800到3400之间的线段并向两边偏移4m,4400到4900之间的线段并向两边偏移5m。怎么实现呢。我写了一个小程序,思路是先把这个多段线的dxf点表读出来,然后用break依次从0到500,1000到5000剩下的还是原来多段线的图元名,偏移8m。后面在根据读出来的点表重新生成一个完整的多段线,继续打断0到1500和2000到5000,依次做完。但是行不通,只有第一次可以搞成。请教老师些有没有啥更好的办法呢。

  • (defun c:hlkx ( en jzwsj / i jzwjkzh jzwckzh oldstartpt oldendpt newstartpt newendpt);;;根据桩号画外轮廓线
  •   (vl-load-com)
  •   (setq en (car(entsel "\n选择渠道轴线:")))  
  •   (setq ptlst  (vl-remove-if-not   '(lambda (x)    (member (car x) '(100 0 8 90 42 10)) )(entget en)  )   )
  •   (setq i 0  )
  •   (setq jzwsj (list (list 500 1000 8) (list 1500 2000 6) (list 2800 3400 4)(list 4400 4900 5)))
  •   (repeat  (length jzwsj) ;循环次数
  •     (setq jzwjkzh (car (nth i jzwsj)));取得进口距离
  •     (setq jzwckzh (cadr (nth  i jzwsj)));取得出口距离
  •     (setq d (caddr (nth  i jzwsj)));建筑物名称
  •      (setq oldstartpt (vlax-curve-getStartPoint en ))
  •     (setq oldendpt (vlax-curve-getendPoint en ))
  •     (setq newstartpt (vlax-curve-getPointAtDist en  jzwjkzh)  )
  •     (setq newendpt (vlax-curve-getPointAtDist en  jzwckzh))
  •     (vl-cmdf "break" en "f" oldstartpt newstartpt )
  •     (vl-cmdf "break" en "f" oldendpt newendpt )
  •     (command "LAYER" "s" "建筑物轮廓线" "")
  •     (command "offset" "e" "y" "l" "c" "t" "")
  •     (command "offset" "20"  en  "b" "")
  •     (setq en (entmake ptlst ))
  •     (setq i (+ i 1))
  •   )
  • )



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

本版积分规则

小黑屋|手机版|CAD论坛|CAD教程|CAD下载|联系我们|关于明经|明经通道 ( 粤ICP备05003914号 )  
©2000-2023 明经通道 版权所有 本站代码,在未取得本站及作者授权的情况下,不得用于商业用途

GMT+8, 2024-11-25 21:35 , Processed in 0.181424 second(s), 24 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表