乐筑天下

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

[编程交流] 自动fillet-trim

[复制链接]

51

主题

288

帖子

30

银币

后起之秀

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

铜币
464
发表于 2022-7-7 02:44:38 | 显示全部楼层 |阅读模式
有没有一个例程或命令(可能在BCAD)可以简单地通过选择对象(直线、折线、圆弧...)
将绿色和黄色绘图转换为洋红色绘图?
显然,必须设置一个参数来定义实体顶点之间的最大允许距离。。。
我可以尝试编写这个例程。。。
。。。
但是如果它已经存在。。。

4erfuzxwy4h.jpg

4erfuzxwy4h.jpg


yjjmz4ituvc.jpg

yjjmz4ituvc.jpg

本帖以下内容被隐藏保护;需要你回复后,才能看到!

游客,如果您要查看本帖隐藏内容请回复
回复

使用道具 举报

4

主题

44

帖子

38

银币

初来乍到

Rank: 1

铜币
23
发表于 2022-7-7 03:51:07 | 显示全部楼层
对于顶部,您可以使用PEDIT。
PEDIT => 多个 => 选择对象 => Join => 键入模糊(大于最大间隙)=> Enter => Enter
Edit,我想你也可以做一个这样的例程:
  1. (defun c:foo (/ acc ss)
  2.   (setq acc (getvar "PEDITACCEPT"))
  3.   (if (setq ss (ssget '((0 . "ARC,*POLYLINE,LINE"))))
  4.     (progn
  5.       (setvar "PEDITACCEPT" 1)
  6.       (command "_.pedit" "_M" ss "" "_J" "100" "") ; Fill in a large enough fuzz here
  7.     )
  8.   )
  9.   (setvar "PEDITACCEPT" acc)
  10.   (princ)
  11. )

对于第二个,你可以看看:http://www.lee-mac.com/intersectionfunctions.html
这样你就可以找到交叉点,但改变线条将是挑战。
回复

使用道具 举报

51

主题

288

帖子

30

银币

后起之秀

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

铜币
464
发表于 2022-7-7 04:06:09 | 显示全部楼层

谢谢德克斯
。 。 。
您的建议非常有用。 。 。
...
我知道并考虑过研究,深化和使用Lee Mac的“交叉函数”。
...
再见
回复

使用道具 举报

106

主题

1万

帖子

101

银币

顶梁支柱

Rank: 50Rank: 50

铜币
1299
发表于 2022-7-7 21:24:06 | 显示全部楼层
第二可以通过修剪,选择剪线,
回复

使用道具 举报

51

主题

288

帖子

30

银币

后起之秀

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

铜币
464
发表于 2022-7-8 02:03:47 | 显示全部楼层
EXTRIM做了同样的事情,但更好...
回复

使用道具 举报

106

主题

1万

帖子

101

银币

顶梁支柱

Rank: 50Rank: 50

铜币
1299
发表于 2022-7-8 21:54:35 | 显示全部楼层
使用extrim Bricscad可能需要加载实验
回复

使用道具 举报

72

主题

738

帖子

75

银币

中流砥柱

Rank: 25

铜币
957
发表于 2022-7-9 01:40:20 | 显示全部楼层

为什么有人需要使用BricsCAD或AutoCAD或?
回复

使用道具 举报

72

主题

738

帖子

75

银币

中流砥柱

Rank: 25

铜币
957
发表于 2022-7-9 10:44:53 | 显示全部楼层
没有考试,我忘了数学,顺便说一句。
  1. (defun c:redrawcrossings ( / *error* _inters ss i lil ip )
  2.   (defun *error* ( m )
  3.     (if m
  4.       (prompt m)
  5.     )
  6.     (princ)
  7.   )
  8.   (defun _inters ( l1 l2 / v^v unit pl1 pl2 x1 x2 x3 x4 y1 y2 y3 y4 z1 z2 z3 z4 v1 v2 n xi1 yi1 zi1 xi2 yi2 zi2 d1 d2 d3 ip )
  9.     (setq pl1 (mpacar (function cdr) (vl-remove-if (function (lambda ( x ) (vl-position (car x) (list 10 11)))) (entget l1))))
  10.     (setq x1 (car (car pl1)) y1 (cadr (car pl1)) z1 (caddr (car pl1)) x2 (car (cadr pl1)) y2 (cadr (cadr pl1)) z1 (caddr (cadr pl1)))
  11.     (setq pl2 (mpacar (function cdr) (vl-remove-if (function (lambda ( x ) (vl-position (car x) (list 10 11)))) (entget l2))))
  12.     (setq x3 (car (car pl2)) y3 (cadr (car pl2)) z3 (caddr (car pl2)) x4 (car (cadr pl2)) y4 (cadr (cadr pl2)) z4 (caddr (cadr pl2)))
  13.     ;;; Xx1 + Yy1 + Zz1 = Q ;;; Xx2 + Yy2 + Zz2 = Q ;;; Xx3 + Yy3 + Zz3 = W ;;; Xx4 + Yy4 + Zz4 = W ;;; Xxi + Yyi + Zzi = Q ;;; Xxi + Yyi + Zzi = W ;;;
  14.     ;;; X(x1-x2) + Y(y1-y2) + Z(z1-z2) = 0 ;;; x1-x2=A , y1-y2=B , z1-z2=C
  15.     ;;; X(x1-xi) + Y(y1-yi) + Z(z1-zi) = 0 ;;; x1-xi=a , y1-yi=b , z1-zi=c
  16.     ;;; X(x2-xi) + Y(y2-yi) + Z(z2-zi) = 0 ;;; x2-xi=d , y2-yi=e , z2-zi=f
  17.     ;;; X(x3-x4) + Y(y3-y4) + Z(z3-z4) = 0 ;;; x3-x4=G , y3-y4=H , z3-z4=I
  18.     ;;; X(x3-xi) + Y(y3-yi) + Z(z3-zi) = 0 ;;; x3-xi=g , y3-yi=h , z3-zi=i
  19.     ;;; X(x4-xi) + Y(y4-yi) + Z(z4-zi) = 0 ;;; x4-xi=j , y4-yi=k , z4-zi=l
  20.     ;;; A*b*I + B*c*G + C*a*H - G*b*C - H*c*A - I*a*B = 0
  21.     ;;; A*e*I + B*f*G + C*d*H - G*e*C - H*f*A - I*d*B = 0
  22.     ;;; A*h*I + B*i*G + C*g*H - G*h*C - H*i*A - I*g*B = 0
  23.     ;;; A*k*I + B*l*G + C*j*H - G*k*C - H*l*A - I*j*B = 0
  24.     ;;; ------------------------------------------------- ;;;
  25.     (setq v1 (list (- x2 x1) (- y2 y1) (- z2 z1)))
  26.     (setq v2 (list (- x4 x3) (- y4 y3) (- z4 z3)))
  27.     (defun v^v ( u v )
  28.       (list
  29.         (- (* (cadr u) (caddr v)) (* (caddr u) (cadr v)))
  30.         (- (* (caddr u) (car v)) (* (car u) (caddr v)))
  31.         (- (* (car u) (cadr v)) (* (cadr u) (car v)))
  32.       )
  33.     )
  34.     (defun unit ( v / d )
  35.       (if (not (equal (setq d (distance v (list 0.0 0.0 0.0))) 0.0 1e-8))
  36.         (mapcar (function (lambda ( x ) (/ x d))) v)
  37.         (prompt "\ncatched error in (unit) - invalid input - reference vector strength near 0.0")
  38.       )
  39.     )
  40.     (setq n (v^v v1 v2))
  41.     (setq n (v^v n v1))
  42.     ;;; x1(xi1-(car n)) + y1(yi1-(cadr n)) + z1(zi1-(caddr n)) = x3(xi1-(car v2)) + y3(yi1-(cadr v2)) + z3(zi1-(caddr v2))
  43.     ;;; x2(xi2-(car n)) + y2(yi2-(cadr n)) + z2(zi2-(caddr n)) = x3(xi2-(car v2)) + y3(yi2-(cadr v2)) + z3(zi2-(caddr v2))
  44.     ;;; x1(xi1-(car n)) = x3(xi1-(car v2)) ;;; x1xi1-x1(car n) = x3xi1-x3(car v2) ;;; xi1(x1-x3) = x1(car n)-x3(car v2)
  45.     ;;; xi1 = [x1(car n)-x3(car v2)]/(x1-x3)
  46.     ;;; yi1 = [y1(cadr n)-y3(cadr v2)]/(y1-y3)
  47.     ;;; zi1 = [z1(caddr n)-z3(caddr v2)]/(z1-z3)
  48.     ;;; xi2 = [x2(car n)-x3(car v2)]/(x2-x3)
  49.     ;;; yi2 = [y2(cadr n)-y3(cadr v2)]/(y2-y3)
  50.     ;;; zi2 = [z2(caddr n)-z3(caddr v2)]/(z2-z3)
  51.     (setq xi1 (/ (- (* x1 (car n)) (* x3 (car v2))) (- x1 x3)))
  52.     (setq yi1 (/ (- (* y1 (cadr n)) (* y3 (cadr v2))) (- y1 y3)))
  53.     (setq zi1 (/ (- (* z1 (caddr n)) (* z3 (caddr v2))) (- z1 z3)))
  54.     (setq xi2 (/ (- (* x2 (car n)) (* x3 (car v2))) (- x2 x3)))
  55.     (setq yi2 (/ (- (* y2 (cadr n)) (* y3 (cadr v2))) (- y2 y3)))
  56.     (setq zi2 (/ (- (* z2 (caddr n)) (* z3 (caddr v2))) (- z2 z3)))
  57.     (if (equal (unit (list (- xi1 x1) (- yi1 y1) (- zi1 z1))) (unit (list (- xi2 x2) (- yi2 y2) (- zi2 z2))) 1e-6)
  58.       (progn
  59.         (setq d1 (distance (list x1 y1 z1) (list xi1 yi1 zi1)))
  60.         (setq d2 (distance (list x2 y2 z2) (list xi2 yi2 zi2)))
  61.         (setq d3 (distance (list x1 y1 z1) (list x2 y2 z2)))
  62.         (setq ip (mapcar (function +) (list x3 y3 z3) (mapcar (function *) (unit v2) (list (* (/ (- d2 d1) d3) d2) (* (/ (- d2 d1) d3) d2) (* (/ (- d2 d1) d3) d2)))))
  63.       )
  64.     )
  65.   )
  66.   (prompt "\nSelect lines...")
  67.   (setq ss (ssget "_:L" (list (cons 0 "LINE"))))
  68.   (repeat (setq i (sslength ss))
  69.     (setq lil (cons (ssname ss (setq i (1- i))) lil))
  70.   )
  71.   (foreach li1 lil
  72.     (setq lil (cdr lil))
  73.     (foreach li2 lil
  74.       (setq ip (_inters li1 li2))
  75.       (if ( : "))
  76.   (if (not fuzz)
  77.     (setq fuzz 1.0)
  78.   )
  79.   (prompt "\nSelect lines...")
  80.   (setq ss (ssget "_:L" (list (cons 0 "LINE"))))
  81.   (repeat (setq i (sslength ss))
  82.     (setq lil (cons (ssname ss (setq i (1- i))) lil))
  83.   )
  84.   (foreach li1 lil
  85.     (setq lil (cdr lil))
  86.     (foreach li2 lil
  87.       (setq ip (_inters li1 li2))
  88.       (cond
  89.         ( (fuzzchk (cdr (assoc 10 (setq li1x (entget li1)))) ip fuzz)
  90.           (entupd (cdr (assoc -1 (entmod (subst (cons 10 ip) (assoc 10 li1x) li1x)))))
  91.         )
  92.         ( (fuzzchk (cdr (assoc 11 li1x)) ip fuzz)
  93.           (entupd (cdr (assoc -1 (entmod (subst (cons 11 ip) (assoc 11 li1x) li1x)))))
  94.         )
  95.       )
  96.       (cond
  97.         ( (fuzzchk (cdr (assoc 10 (setq li2x (entget li2)))) ip fuzz)
  98.           (entupd (cdr (assoc -1 (entmod (subst (cons 10 ip) (assoc 10 li2x) li2x)))))
  99.         )
  100.         ( (fuzzchk (cdr (assoc 11 li2x)) ip fuzz)
  101.           (entupd (cdr (assoc -1 (entmod (subst (cons 11 ip) (assoc 11 li2x) li2x)))))
  102.         )
  103.       )
  104.     )
  105.   )
  106.   (*error* nil)
  107. )
回复

使用道具 举报

发表回复

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

本版积分规则

  • 微信公众平台

  • 扫描访问手机版

  • 点击图片下载手机App

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

GMT+8, 2025-3-4 05:59 , Processed in 0.334871 second(s), 71 queries .

© 2020-2025 乐筑天下

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