乐筑天下

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

[编程交流] 圆角平行线

[复制链接]

26

主题

1495

帖子

20

银币

初露锋芒

Rank: 3Rank: 3Rank: 3

铜币
118
发表于 2022-7-6 09:03:41 | 显示全部楼层 |阅读模式
问候语!
 
我需要做一个例程,添加一个弧段来连接两条平行线
基于:
 
[列表]
  • 选取2条平行线-线的基本误差捕捉
  • 创建一条半径为直线前端点距离1\2的弧
  • 使弧在直线端点之间居中
  • 将直线端点修剪到圆弧的起点/终点
    [/列表]
     
    由于ACAD不会对2条平行线进行圆角处理,因此要使其像_x一样工作有点困难。Fillet命令
     
    由于结果不一致,我不得不添加旋转弧查询。找到起点和终点的角度似乎很简单,但并不那么容易
     
    我展示了我使用过的一些构造/计算温度线
     
    绿线-中点=弧的中心点
    黄色和红色-毛前至线条端点
    蓝色和青色-弧中心到弧端点
     
    我现在拥有的是一个非常非常庞大的群体。如果您有任何想法,我们将不胜感激!
    1. (defun c:fend (/ l1 l2 s1 s2
    2.                p10 p11 p20 p21 e1 e2 p1 p2 em1 em2 la
    3.                sp ep sa ea mp ra pt1 pt2 pp1 pp2 zl pe1 pe2
    4.                )
    5. (princ "\nSelect 2 Parallel Lines")
    6. (while (not l1)
    7.         (while (not s1)
    8.                (setq s1 (entsel "\nSelect 1st Line:   ")))
    9.         (setq p1 (nth 1 s1)
    10.               ep (car s1))
    11.         (if (= "LINE" (cdr (assoc 0 (entget ep))))
    12.             (setq l1 ep)))
    13. (setq pe1 (osnap p1 "end"))
    14. (redraw l1 3)
    15. (while (not l2)
    16.         (while (not s2)
    17.                (setq s2 (entsel "\nSelect 2nd Line:   ")))
    18.         (setq p2 (nth 1 s2)
    19.               ep (car s2))
    20.         (if (= "LINE" (cdr (assoc 0 (entget ep))))
    21.             (setq l2 ep)))
    22. (setq pe2 (osnap p2 "end"))
    23. (redraw l2 3)
    24. (setq e1 (entget l1)
    25.        e2 (entget l2)
    26.        p10 (cdr (assoc 10 e1))
    27.        p11 (cdr (assoc 11 e1))
    28.        p20 (cdr (assoc 10 e2))
    29.        p21 (cdr (assoc 11 e2)))
    30. ;;;COMPARE LINE ANGLES
    31. (if (not (or (equal (angle p10 p11) (angle p20 p21) 1e-
    32.               (equal (angle p10 p11) (angle p21 p20) 1e-))
    33.       (progn
    34.         (alert "Lines Are Not Parallel")
    35.         (exit)))
    36. ;;;COMPARE LINE ELEVATIONS
    37. (setq zl (mapcar 'caddr (list p10 p11 p20 p21)))
    38. (if (apply '/= zl)
    39.      (progn
    40.         (alert "Lines Are Not Equal Elevation")
    41.         (exit)))
    42. ;;;COMPARE LINE UCS
    43. (if (not (equal (cdr (assoc 210 e1)) (cdr (assoc 210 e2)) 1e-)
    44.      (alert "Lines Are Not Same UCS - Be Careful"))
    45. ;;;CLOSEST ENDS TO 1ST PICK POINT
    46. (if (< (distance p10 p1) (distance p11 p1))
    47.      (setq pt1 p10 em1 10 la (angle p11 p10))
    48.      (setq pt1 p11 em1 11 la (angle p10 p11)))
    49. (if (< (distance p20 pt1) (distance p21 pt1))
    50.      (setq pt2 p20 em2 10)
    51.      (setq pt2 p21 em2 11))
    52. (grdraw pt1 pt2 3 0)
    53. ;;;PERPINDICULAR POINTS
    54. (setq pp1 (inters p10 p11 pt2 (polar pt2 (+ (angle p10 p11) (* pi 0.5)) 1) nil))
    55. (setq pp2 (inters p20 p21 pt1 (polar pt1 (+ (angle p10 p11) (* pi 0.5)) 1) nil))
    56. (grdraw pt1 pp2 1 0)
    57. (grdraw pt2 pp1 2 0)
    58. (setq mp (mapcar '(lambda (a b) (* (+ a b) 0.5)) pt1 pt2)
    59.        ra (* (distance pt1 pp2) 0.5)
    60.        sa (angle pt1 pp2)     ;;;!!!Here is the problem child
    61.        ea (+ sa pi)
    62.        sp (polar mp sa ra)
    63.        ep (polar mp ea ra))
    64. (entmake (list (cons 0 "ARC")
    65.                 (assoc 8 e1)
    66.                 (cons 10 mp)
    67.                 (cons  6 (if (assoc  6 e1) (cdr (assoc  6 e1)) "BYLAYER"))
    68.                 (cons 39 (if (assoc 39 e1) (cdr (assoc 39 e1)) 0))
    69.                 (cons 62 (if (assoc 62 e1) (cdr (assoc 62 e1)) 256))
    70.                 (cons 40 ra)
    71.                 (cons 50 sa)
    72.                 (cons 51 ea)))
    73. (grdraw sp mp 4 0)
    74. (grdraw ep mp 5 0)
    75. ;;;TRIM THE LINES
    76. (entmod (subst (cons em1 ep) (assoc em1 e1) e1))
    77. (entmod (subst (cons em2 sp) (assoc em2 e2) e2))
    78. ;;FIX THEN BUG
    79. (initget "Yes No")
    80. (if (= "Yes" (getkword "\nRotate The ARC 180 Degrees? <N>:   "))
    81.      (command "_.ROTATE" (entlast) "" mp 180.0))
    82. (redraw)
    83. (prin1))

     
    -大卫
  • 回复

    使用道具 举报

    114

    主题

    1万

    帖子

    1万

    银币

    中流砥柱

    Rank: 25

    铜币
    543
    发表于 2022-7-6 09:07:07 | 显示全部楼层
    此任务允许Visual LISP吗David?
    回复

    使用道具 举报

    7

    主题

    340

    帖子

    338

    银币

    初来乍到

    Rank: 1

    铜币
    37
    发表于 2022-7-6 09:12:06 | 显示全部楼层
    我不知道你用的是哪个版本的大卫,但2010年圆角平行线。。。使用半径为零,它会立即弹出
     
    编辑——检查了我2007年的机器,它做到了,Bricscad也做到了。
     
    我一直用那种方法画槽。
    回复

    使用道具 举报

    8

    主题

    1133

    帖子

    1164

    银币

    初来乍到

    Rank: 1

    铜币
    10
    发表于 2022-7-6 09:14:48 | 显示全部楼层
    您可以在r13中圆角平行线(这要追溯到我的手册了!)
    回复

    使用道具 举报

    26

    主题

    1495

    帖子

    20

    银币

    初露锋芒

    Rank: 3Rank: 3Rank: 3

    铜币
    118
    发表于 2022-7-6 09:17:05 | 显示全部楼层
    哇!
     
    我没想过要查看更新的版本。R12做不到。R13+可以做到。我想这是我会发现有价值的一个特性。所以我必须用我的(普通autolisp)谢谢-David
    回复

    使用道具 举报

    22

    主题

    326

    帖子

    185

    银币

    后起之秀

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

    铜币
    243
    发表于 2022-7-6 09:20:04 | 显示全部楼层
    嗨,大卫,我试着用你的rountine,但它总是在步骤中停止选择第1行,所以。。。
    回复

    使用道具 举报

    26

    主题

    1495

    帖子

    20

    银币

    初露锋芒

    Rank: 3Rank: 3Rank: 3

    铜币
    118
    发表于 2022-7-6 09:25:32 | 显示全部楼层
     
     
    它寻找的是一条简单的线,而不是多段线。可能这就是问题所在。
    回复

    使用道具 举报

    22

    主题

    326

    帖子

    185

    银币

    后起之秀

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

    铜币
    243
    发表于 2022-7-6 09:26:02 | 显示全部楼层
    哦,对了^你为什么不过滤一下以避免遗漏呢^^
    谢谢,很好
    回复

    使用道具 举报

    13

    主题

    146

    帖子

    136

    银币

    初露锋芒

    Rank: 3Rank: 3Rank: 3

    铜币
    62
    发表于 2022-7-6 09:31:35 | 显示全部楼层
     
    总是更改圆角半径有点麻烦。
    另一种方法是在发出fillet命令后按住SHIFT键对这些讨厌的平行线进行圆角。
     
    史蒂夫
    回复

    使用道具 举报

    7

    主题

    340

    帖子

    338

    银币

    初来乍到

    Rank: 1

    铜币
    37
    发表于 2022-7-6 09:32:35 | 显示全部楼层
     
    实际上,你甚至不必这么做。我忘了,但在平行线上,半径将暂时调整,无论它设置在什么位置。旧习难改。我在绘制新的拉伸时使用了很多圆角,它们总是在变化,所以我一点也不想改变它们。
    回复

    使用道具 举报

    发表回复

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

    本版积分规则

    • 微信公众平台

    • 扫描访问手机版

    • 点击图片下载手机App

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

    GMT+8, 2025-3-7 06:11 , Processed in 1.096012 second(s), 72 queries .

    © 2020-2025 乐筑天下

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