Kenter 发表于 2022-7-5 22:54:49

谢谢大家,我已经通过了你们的建议并做出了改变。也解决了圆角的问题。
 
 
(命令
“圆角”“\u r”0.03
“.fillet”“\u polyline”b1
“_.fillet”“\u polyline”b2
“.fillet”“\u polyline”b6
“.fillet”“\u polyline”b9
“_.fillet”“\u polyline”(mapcar’+pLL(列表10.941 2.5 0))
“_.fillet”“\u polyline”(地图车'+脉冲(列表10.941-2.5 0))
)

alanjt 发表于 2022-7-5 22:55:37

好交易。

萬里独行 发表于 2022-7-5 23:00:12

亲爱的大家!
 
请帮帮我!
 
(defun fb(r1 r2 b)
....
)
 
需求内容如图所示
 
https://drive.google.com/file/d/0B4IWlz7EzcZLa3Z0X2hCWGh5bWc/view?usp=sharing
 
链接:https://drive.google.com/file/d/0B4IWlz7EzcZLa3Z0X2hCWGh5bWc/view?usp=sharing

hanhphuc 发表于 2022-7-5 23:04:25

 
你好萬里独行 欢迎来到论坛
请理解,我们是志愿者,所以不要期望过高
1.如果闭合多段线,则效果不佳。(提示:dxf 70)
2.偏移过大时出错
3.仅应用标准圆角和半径
所以你可以学习,修改等等。。
希望总比什么都没有好
 

;fop.lsp :fillet open polyline
(defun c:fop (/ *error*r e d)
;hanhphuc 2014
(defun *error* (msg) (if msg
(princ "\n*cancel*")))
(if (and (not (initget 5))
   (setq r (getdist "\nRadius : "))
   (not (initget 7))
   (setq d (getdist "\nWidth : "))
   (setq e (entsel "\nSelect Polyline.. "))
   (setq e (car e))
   (=(cdr(assoc 0 (entget e)))"LWPOLYLINE")
   (vl-cmdf "_fillet" "P" e)
   (setq e (vlax-ename->vla-object e))
   
   ) ;_ end of and
   (foreach x '("StartPoint" "EndPoint")
   (entmakex
(vl-list* '(0 . "LINE")
          (cons 8 (vla-get-layer e))
          (mapcar 'cons
                  '(10 11)
                  (mapcar '(lambda (o) ((eval (read (strcat "vlax-curve-get" x))) o))
                          (apply 'append (mapcar ''((x) (vlax-invoke e 'Offset (x (* d 0.5)))) (list + -)))
                          ) ;_ end of mapcar
                  ) ;_ end of mapcar
          ) ;_ end of vl-list*
) ;_ end of entmakex
   ) ;_ end of foreach
(princ "\nsorry..")
   ) ;_ end of if
(princ)
)

萬里独行 发表于 2022-7-5 23:08:50

 
非常感谢!但是
 
圆角多段线具有2个半径:R1和R2
+R1表示结束
+R2用于MID
 

很抱歉我的英语太差了!

hanhphuc 发表于 2022-7-5 23:10:15

 
这意味着你只有2个R1,为什么可以手动完成??
使用FOP。中间R2的lsp。
 
如果完全自动化,则需要编写单圆角函数。但希望我能有更多的空闲时间
 
以下是一些有用的多段线工具HTH

萬里独行 发表于 2022-7-5 23:13:51

可用时间:
1、开放多段线。
2、层边界。
 
输入:R1、R2和B
1.R1是起点和终点的圆角半径。
2.R2是剩余顶点之间的圆角半径
3.B是边界宽度。
 
要求:
边界是“边界”层中的多段线(可用)
 
(*)详细说明见附件。
普林。图纸
页: 1 [2]
查看完整版本: LISP中的圆角多段线