乐筑天下

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

[编程交流] 断开圆弧

[复制链接]

5

主题

1334

帖子

1410

银币

限制会员

铜币
-20
发表于 2022-7-5 17:14:41 | 显示全部楼层
这里,纯香草Lisp程序:
 
  1. (defun IsPTonLW ( ptucs lw / pt enx lwdata lwdata1 lwdata2 d1 d2 b r ang a1 a2 rtn )
  2. (setq pt (trans ptucs 1 0))
  3. (setq lwdata1 (vl-remove-if (function (lambda ( x ) (/= (car x) 10))) (setq enx (entget lw))))
  4. (setq lwdata1 (mapcar (function (lambda ( x ) (cons 10 x))) (mapcar (function (lambda ( x ) (trans (list (car x) (cadr x) (cdr (assoc 38 enx))) lw 0))) (mapcar (function cdr) lwdata1))))  
  5. (setq lwdata2 (vl-remove-if (function (lambda ( x ) (/= (car x) 42))) enx))
  6. (if (= 1 (logand 1 (cdr (assoc 70 enx))))
  7.    (setq lwdata1 (reverse (cons (car lwdata1) (reverse lwdata1))) lwdata2 (reverse (cons (car lwdata2) (reverse lwdata2))))
  8. )
  9. (setq lwdata (mapcar (function (lambda ( a b ) (list a b))) lwdata1 lwdata2))
  10. (while (cadr lwdata)
  11.    (setq d1 (car lwdata) d2 (cadr lwdata))
  12.    (setq b (cdadr d1))
  13.    (if (zerop b)
  14.      (if (equal (distance (cdar d1) (cdar d2)) (+ (distance (cdar d1) pt) (distance pt (cdar d2))) 1e-6)
  15.        (setq rtn (cons t rtn))
  16.        (setq rtn (cons nil rtn))
  17.      )
  18.      (progn
  19.        (setq r (abs (/ (/ (distance (cdar d1) (cdar d2)) 2) (sin (* 2 (atan b))))))
  20.        (setq ang (abs (* 4 (atan b))))
  21.        (if (<= -1.0 (/ (distance (cdar d1) pt) (* 2 r)) 1.0)
  22.          (setq a1 (abs (* 2 (atan (/ (distance (cdar d1) pt) (* 2 r)) (sqrt (- 1.0 (expt (/ (distance (cdar d1) pt) (* 2 r)) 2)))))))
  23.          (setq a1 nil)
  24.        )
  25.        (if (<= -1.0 (/ (distance (cdar d2) pt) (* 2 r)) 1.0)
  26.          (setq a2 (abs (* 2 (atan (/ (distance (cdar d2) pt) (* 2 r)) (sqrt (- 1.0 (expt (/ (distance (cdar d2) pt) (* 2 r)) 2)))))))
  27.          (setq a2 nil)
  28.        )
  29.        (if (and a1 a2 (equal ang (+ a1 a2) 1e-6))
  30.          (setq rtn (cons t rtn))
  31.          (setq rtn (cons nil rtn))
  32.        )
  33.      )
  34.    )
  35.    (setq lwdata (cdr lwdata))
  36. )
  37. (apply (function or) rtn)
  38. )
回复

使用道具 举报

66

主题

1552

帖子

1514

银币

后起之秀

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

铜币
325
发表于 2022-7-5 17:20:17 | 显示全部楼层
不幸的是,这必须是我的方式。。。
如果p不在活动屏幕ACAD界面的可见部分,则(nentselp p)将返回nil。。。
回复

使用道具 举报

5

主题

1334

帖子

1410

银币

限制会员

铜币
-20
发表于 2022-7-5 17:21:11 | 显示全部楼层
 
哦,好吧,我没有意识到这一点。
我的蹩脚修改是使用“最大化显示”和“上一个缩放”。(那是因为我不懂lisp数学)
回复

使用道具 举报

66

主题

1552

帖子

1514

银币

后起之秀

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

铜币
325
发表于 2022-7-5 17:26:37 | 显示全部楼层
 
也许 吧:
[code]defun c:is\u pt\u on\u pl/fz en ss ptsetq fz 1e 11)[/color b]不是enb]princ“\n选择1多段线”setq ssssgetlistcons 0“多段线”[color=RED 4]cons-4。”F]“
回复

使用道具 举报

26

主题

1495

帖子

20

银币

初露锋芒

Rank: 3Rank: 3Rank: 3

铜币
118
发表于 2022-7-5 17:28:40 | 显示全部楼层
 
它不适合我,因为我想在特定的物体上试用。
 
 
这就完成了我的工作,我只需要更改代码中的vl remove if函数。但这只支持多段线,而不支持圆弧或圆。
回复

使用道具 举报

55

主题

402

帖子

357

银币

后起之秀

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

铜币
274
发表于 2022-7-5 17:32:15 | 显示全部楼层
 
非常感谢BIGAL。这是一个很好的解决方案,支持所有圆弧、圆、多段线和椭圆对象。
回复

使用道具 举报

55

主题

402

帖子

357

银币

后起之秀

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

铜币
274
发表于 2022-7-5 17:34:28 | 显示全部楼层
我没有完全理解你的要求:
 
[code](defun IsPTonARC(ptucs arc/pta c r a1 a2 a rtn)(setq pta(trans ptucs 1 arc))(setq c(cdr(assoc 10(entget arc)))(setq r(cdr(assoc 40(entget arc)))(setq a1(cdr(assoc 50(entget arc)))(setq a2(cdr(assoc 51(entget arc))))(setq a(角度c pta))(if(>a1 a2)(setq a1(-a1(*pi)))(if(and(equal(caddr pta(caddr c)1e-6)(等距(trans c arc 1)ptucs)r 1e-6)(if(和(minusp a1)(>a a2))(
回复

使用道具 举报

5

主题

1334

帖子

1410

银币

限制会员

铜币
-20
发表于 2022-7-5 17:37:50 | 显示全部楼层
砰的一声。。。。谢谢
回复

使用道具 举报

55

主题

402

帖子

357

银币

后起之秀

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

铜币
274
发表于 2022-7-5 17:40:53 | 显示全部楼层
 
我对圆有一个错误-当你只检查半径=距离(cen,pt)时,属于球体的任何点都应该返回T,所以我也添加了要检查的点平面。。。
回复

使用道具 举报

5

主题

1334

帖子

1410

银币

限制会员

铜币
-20
发表于 2022-7-5 17:44:03 | 显示全部楼层
回复

使用道具 举报

发表回复

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

本版积分规则

  • 微信公众平台

  • 扫描访问手机版

  • 点击图片下载手机App

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

GMT+8, 2025-8-24 15:20 , Processed in 0.509438 second(s), 72 queries .

© 2020-2025 乐筑天下

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