乐筑天下

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

[编程交流] 计算精确长度

[复制链接]

76

主题

312

帖子

254

银币

后起之秀

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

铜币
390
发表于 2022-7-5 15:58:25 | 显示全部楼层 |阅读模式
大家好,
 
我创建了一个lisp来偏移一条线,
用给定值扩展线,
然后闭合两条线之间的间隙。
 
现在,当我的多段线为V形时,绝对长度会延长/缩短。
 
如何修改此代码,使DeltaX为我的值,并计算扩展长度?
 
例子:
我得到了一条^形的多段线,0,0,12,0(2x 45度)。
我希望这条线向DeltaX方向延伸1米。
现在我的代码扩展了1米,所以detalX的变化只是。。。0,7071.
 
  1. (defun C:OffsetJoinCopy ( / offsetobject )
  2. (setvar "cmdecho" 0)
  3. (command "UNDO" "BEGIN")
  4. (if (= offsetdepthvalue nil)(setq offsetdepthvalue 0.0))
  5. (if (= offsetwidthvalue nil)(setq offsetwidthvalue 0.0))
  6. (setq newoffsetdepthvalue (getreal (strcat "Specify offset depth <" (rtos offsetdepthvalue 2) ">: ")))
  7. (cond
  8.         ((= newoffsetdepthvalue nil)
  9.                 (setq offsetdepthvalue offsetdepthvalue)
  10.         )
  11.         (t
  12.                 (setq offsetdepthvalue newoffsetdepthvalue)
  13.         )
  14. )
  15. (setq newoffsetwidthvalue (getreal (strcat "Specify offset width <" (rtos offsetwidthvalue 2) ">: ")))
  16. (cond
  17.         ((= newoffsetwidthvalue nil)
  18.                 (setq offsetdepthvalue offsetwidthvalue)
  19.         )
  20.         (t
  21.                 (setq offsetwidthvalue newoffsetwidthvalue)
  22.         )
  23. )
  24. (setq offsetobject (entsel "\nSelect object to offset: "))
  25. (cond
  26.         ((and (/= offsetdepthvalue 0)(/= offsetwidthvalue 0)(/= offsetobject nil))
  27.                 (setvar "peditaccept" 1)
  28.                 (command "_COPY" offsetobject "" "" "")
  29.                 (setq topline (entlast))
  30.                 (setq currentlength (vlax-curve-getdistatparam (entlast) (vlax-curve-getendparam (entlast))))
  31.                 [color="red"](setq newlength (+ currentlength (* 2 offsetwidthvalue)))[/color]
  32.                 (setq extendlength (/ (- newlength currentlength) 2))
  33.                 (setq StrtPnt (vlax-curve-getStartPoint (entlast)))
  34.                 (setq EnfPoint (vlax-curve-getEndPoint (entlast)))
  35.                 (vl-cmdf "_.lengthen" "Delta" extendlength StrtPnt EnfPoint "")
  36.                 (command "_COPY" (entlast) "" "" "")
  37.                 (command "_MOVE" (entlast) "" "0,0" (strcat "0,-" (rtos offsetdepthvalue)))
  38.                 (setq xy1 (strcat (rtos (car (cdr (assoc 10 (entget (entlast)))))) "," (rtos (car (cdr (cdr (assoc 10 (entget (entlast)))))))))
  39.                 (setq xy2 (strcat (rtos (car (cdr (assoc 10 (entget topline))))) "," (rtos (car (cdr (cdr (assoc 10 (entget topline))))))))
  40.                 (setq xy3 (strcat (rtos (car (cdr (assoc 10 (reverse (entget (entlast))))))) "," (rtos (car (cdr (cdr (assoc 10 (reverse (entget (entlast))))))))))
  41.                 (setq xy4 (strcat (rtos (car (cdr (assoc 10 (reverse (entget topline)))))) "," (rtos (car (cdr (cdr (assoc 10 (reverse (entget topline)))))))))
  42.                 (command "_PLINE" xy1 xy2 "")
  43.                 (command "_PLINE" xy3 xy4 "")
  44.                 (setvar "peditaccept" 0)
  45.         )
  46.         (t
  47.                 (princ "*Cancel*")
  48.         )
  49. )
  50. (command "UNDO" "END")
  51. (setvar "cmdecho" 1)
  52. (princ)
  53. )
回复

使用道具 举报

18

主题

1529

帖子

973

银币

中流砥柱

Rank: 25

铜币
649
发表于 2022-7-5 16:20:02 | 显示全部楼层
您知道OSMODE和LUPREC设置都会对代码的结果产生影响吗?鉴于本主题的标题,您似乎不太可能希望这样。
 
注:请参见此处。
回复

使用道具 举报

5

主题

956

帖子

963

银币

初来乍到

Rank: 1

铜币
35
发表于 2022-7-5 16:46:06 | 显示全部楼层
 
我认为这更有意义45度
0,0 1,1 2,0
  1. try math [color="blue"]cos[/color] or [color="blue"]sin [/color] &[color="blue"] abs[/color]
  2. (defun foo (x a)(/ x ([color="blue"]cos [/color]a ) ))
  3. ;(foo 1. (/ pi 4.))
  4. (foo 1. (angle '(0 0)'(1 1)))
  5. (foo 1. (angle '(1 1)'(2 0)))
  6. [color="green"];1.41421 to be extended?[/color]
回复

使用道具 举报

76

主题

312

帖子

254

银币

后起之秀

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

铜币
390
发表于 2022-7-5 17:02:52 | 显示全部楼层
成功了,
我使用COS函数来计算长度。
 
正在思考的方式很难。。。
 
谢谢
回复

使用道具 举报

发表回复

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

本版积分规则

  • 微信公众平台

  • 扫描访问手机版

  • 点击图片下载手机App

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

GMT+8, 2025-3-14 13:08 , Processed in 0.452403 second(s), 60 queries .

© 2020-2025 乐筑天下

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