乐筑天下

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

[编程交流] 更改线路长度

[复制链接]

5

主题

29

帖子

24

银币

初来乍到

Rank: 1

铜币
25
发表于 2022-7-5 15:51:21 | 显示全部楼层 |阅读模式
如何通过lisp根据用户给定的新长度更改或修改选定线或多边形线的长度?
 
非常感谢。
回复

使用道具 举报

10

主题

8258

帖子

8335

银币

初来乍到

Rank: 1

铜币
31
发表于 2022-7-5 16:08:39 | 显示全部楼层
为什么不能使用Kent Cooper在AutoDesk论坛上演示的“加长”命令?
 
延长
全部的
[输入长度]
栅栏
[绘制跨越要延长/缩短的端点的围栏路径]
回复

使用道具 举报

5

主题

29

帖子

24

银币

初来乍到

Rank: 1

铜币
25
发表于 2022-7-5 16:13:48 | 显示全部楼层
谢谢你的评论。。我不知道这个命令。非常有用的命令。
如何缩短此命令,如
1) 选择线/多边形线
2) 指定所需的总长度
3) 然后输入。。
 
非常感谢。
回复

使用道具 举报

58

主题

3353

帖子

33

银币

顶梁支柱

Rank: 50Rank: 50

铜币
1761
发表于 2022-7-5 16:30:42 | 显示全部楼层
  1. (defun c:foo (/ l s)
  2. (if (and (setq l (getdist "\nEnter length: ")) (setq s (ssget ":L" '((0 . "*polyline,line")))))
  3.    (foreach x (vl-remove-if 'listp (mapcar 'cadr (ssnamex s)))
  4.      (vl-cmdf "_Lengthen" "Total" l x "")
  5.    )
  6. )
  7. (princ)
  8. )
回复

使用道具 举报

17

主题

1274

帖子

25

银币

后起之秀

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

铜币
260
发表于 2022-7-5 16:40:48 | 显示全部楼层
下面是一个用于带选项的斜线的选项:
  1. ;| Change the Length of a Line|;
  2. ; BY: Tom Beauford
  3. ; BeaufordT@LeonCountyFL.gov
  4. ; Leon County Public Works Engineering
  5. ;(or C:chl (load "ChgLen.lsp"));chl
  6. ; (load "ChgLen.lsp") chl
  7. ;=======================================================
  8. (defun C:chl (/ ActDoc A pick B etype pt1 pt pt2 pt3 pt4 distold dist1 ang1 z1)
  9. (setq ActDoc (vla-get-ActiveDocument (vlax-get-Acad-Object)))
  10. (vla-StartUndoMark ActDoc)
  11. (setq A (entsel "\nSelect Entity: ")
  12.     pick (osnap (cadr A) "endp")
  13.        B (entget (car A))
  14.    etype (cdr(assoc 0 B))
  15. ); setq
  16. (princ "\netype = ")
  17. (princ etype)
  18. (cond
  19.    ((eq etype "LINE")
  20.      (progn
  21.        (setq pt1 (cdr (assoc 10 B)) pt2 (cdr (assoc 11 B)))
  22.        (if (>(distance pt1 pick)(distance pick pt2))
  23.         (setq pt pt1 pt1 pt2 pt2 pt)
  24.        )
  25.        (setq pt3 (list (car pt1)(cadr pt1)) pt4 (list (car pt2)(cadr pt2))
  26.                  distold (distance pt3 pt4)
  27.                  ang1 (angle pt2 pt1)
  28.        )
  29.        (princ "\nOld Distance=")
  30.        (princ distold)
  31.        (initget "Lengthen Shorten Total Elevation Percent Ratio")
  32.        (if(= ¦¦global¦¦ nil)(setq ¦¦global¦¦ "Total"))
  33.        (if(setq ¦¦notnil¦¦ (getkword (strcat " [Lengthen/Shorten/Total/Elevation/Percent/Ratio] <" ¦¦global¦¦ ">: ")))(setq ¦¦global¦¦ ¦¦notnil¦¦))
  34.        (setvar "cmdecho" 0)
  35.    (cond
  36.      ((= ¦¦global¦¦ "Lengthen")
  37.        (setq dist1 (+ distold (getreal "\nEnter Distance: "))
  38.                  z1 (+(caddr pt2)(*(/ dist1 distold)(-(caddr pt1)(caddr pt2))))
  39.        )
  40.      ); Lengthen
  41.      ((= ¦¦global¦¦ "Shorten")
  42.        (setq dist1 (- distold (getreal "\nEnter Distance: "))
  43.                  z1 (+(caddr pt2)(*(/ dist1 distold)(-(caddr pt1)(caddr pt2))))
  44.        )
  45.      ); Shorten
  46.      ((= ¦¦global¦¦ "Total")
  47.        (setq dist1 (getreal "\nEnter New Length: ")
  48.                  z1 (+(caddr pt2)(*(/ dist1 distold)(-(caddr pt1)(caddr pt2))))
  49.        )
  50.      ); Total
  51.      ((= ¦¦global¦¦ "Elevation")
  52.        (setq z1 (getreal "\nEnter Elevation to Trim/Extend: ")
  53.                  dist1 (*(/ distold (-(caddr pt1)(caddr pt2)))(- z1 (caddr pt2)))
  54.          )
  55.      ); Elevation
  56.      ((= ¦¦global¦¦ "Percent")
  57.        (setq z1 (+(caddr pt2)(* distold(getreal "\nEnter Slope in %: ")0.01))
  58.                  dist1 distold
  59.        )
  60.      ); Percent
  61.      ((= ¦¦global¦¦ "Ratio")
  62.        (setq z1 (+(caddr pt2)(/ distold(getreal "\nEnter Run/Rise: ")))
  63.                  dist1 distold
  64.        )
  65.      ); Ratio
  66.    ); cond
  67.        (setq pt1 (polar pt2 ang1 dist1)
  68.                  pt1 (list (car pt1)(cadr pt1) z1)
  69.        )
  70.        (if pt (setq pt pt1 pt1 pt2 pt2 pt))
  71.        (setq B (subst(cons 10 pt1)(assoc 10 B) B)
  72.              B (subst(cons 11 pt2)(assoc 11 B) B)
  73.        )
  74.        (entmod B)
  75.        (princ "\nOld Distance=")
  76.        (princ distold)
  77.        (princ ", New Distance=")
  78.        (princ dist1)
  79.      ); progn
  80.    ); line
  81.    ((or(eq etype "ARC")(eq etype "POLYLINE")(eq etype "LWPOLYLINE"))
  82.      (progn
  83.        (command "lengthen" pick)
  84.      ); progn
  85.    ); ARC, POLYLINE or LWPOLYLINE
  86. ); cond
  87. (vla-EndUndoMark ActDoc)
  88. (princ)
  89. )
回复

使用道具 举报

5

主题

29

帖子

24

银币

初来乍到

Rank: 1

铜币
25
发表于 2022-7-5 16:51:01 | 显示全部楼层
你好谢谢你,罗恩·琼普。。我需要这样。
回复

使用道具 举报

5

主题

29

帖子

24

银币

初来乍到

Rank: 1

铜币
25
发表于 2022-7-5 16:53:27 | 显示全部楼层
谢谢tombu
回复

使用道具 举报

发表回复

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

本版积分规则

  • 微信公众平台

  • 扫描访问手机版

  • 点击图片下载手机App

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

GMT+8, 2025-3-13 21:36 , Processed in 0.684224 second(s), 66 queries .

© 2020-2025 乐筑天下

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