中心圆(穿线孔)
(defun c:zy (/ ss r i minpt maxpt p p_r p_u p_l p_d)(prompt "\n选择对象")
(if (and (setq ss (ssget))
(setq r 0.33)
)
(repeat (setq i (sslength ss))
(setq i (1- i) a (vlax-ename->vla-object (ssname ss i)))
(vla-getboundingbox a 'minpt 'maxpt)
(mapcar 'set '(minpt maxpt) (mapcar 'vlax-safearray->list (list minpt maxpt)))
(setq p (mapcar '(lambda (x y) (/ (+ x y) 2.0)) minpt maxpt))
(entmake (list '(0 . "CIRCLE") (cons 10 p) (cons 40 r)))
(entmake (list '(0 . "line") ))
)
)
请大师帮忙修改:根据选择对象的大小改变中心圆的大小,(选择对象越大中心圆越大,反之越小)
本帖最后由 ssyfeng 于 2023-8-8 23:18 编辑
看看是不是这个效果:
这样?
(defun c:zy (/ ss r i minpt maxpt p p_r p_u p_l p_d)
(prompt "\n选择对象")
(if (and (setq ss (ssget))
;(setq r 0.33)
)
(repeat (setq i (sslength ss))
(setq i (1- i) a (vlax-ename->vla-object (ssname ss i)))
(setq rr (vla-get-radius a))
(vla-getboundingbox a 'minpt 'maxpt)
(mapcar 'set '(minpt maxpt) (mapcar 'vlax-safearray->list (list minpt maxpt)))
(setq p (mapcar '(lambda (x y) (/ (+ x y) 2.0)) minpt maxpt))
(entmake (list '(0 . "CIRCLE") (cons 10 p) (cons 40(/ rr 3))))
(entmake (list '(0 . "line") ))
)
)
)
czb203 发表于 2023-8-8 21:23
不会随着选择对象的大小变大变小 ssyfeng 发表于 2023-8-8 23:13
看看是不是这个效果:
向大神学习,感谢分享~ ssyfeng 发表于 2023-8-8 23:13
看看是不是这个效果:
应该不是这个效果。他想要的是中间生成一个线割的穿丝孔,形状大就把穿线孔做大点,形状小就把穿丝孔做小点,一般最大就用8mm的孔就行了。 ssyfeng 发表于 2023-8-8 23:13
看看是不是这个效果:
多谢大师,我自己又改了下,已经OK了 多谢楼主分享{:1_1:} ssyfeng 发表于 2023-8-8 23:13
看看是不是这个效果:
大师,如果我要求这种图形的中心圆或者中心线了
页:
[1]
2