ketxu
发表于 2021-12-7 12:16:59
Thanks for sharing <3
xiao88gang
发表于 2021-12-7 16:55:47
谢谢大师的分享,非常实用,怎么能把中心线去掉呢?
尘缘一生
发表于 2021-12-7 20:08:15
本帖最后由 尘缘一生 于 2021-12-7 20:45 编辑
借郎大师帖子,发下我用的,虽然这个对我专业不大用,但也考虑做了点工作,对于格式画线,请研究小菜版的智能中心线部分可也,这部分就是中线线的一部分fy_lineformat ,可以全部注销不用,我的是非动态,三点定位方式。
[*];;**************三点椭圆孔****************
[*](defun c:slot (/ w ang1 bp1 bp2 p1 p2 p3 p4 cp1 cp2 cp3 cp4 cp5 cp6 oldorh gj_oo)
[*](setq oldorh (getvar "ORTHOMODE"))
[*](setq gj_oo (getvar "osmode"))
[*](setvar "ORTHOMODE" 1) ;;正交打开
[*](setq bp1 (getpoint "\n 输入长圆孔第一个中心点:")
[*] bp2 (getpoint bp1 "\n 输入长圆孔第二个中心点:")
[*] bp3 (getpoint bp2 "\n 拉出长圆孔半个宽度点:")
[*] ang1 (angle bp1 bp2)
[*] w (distance bp2 bp3)
[*])
[*](setvar "cmdecho" 0)
[*](cykong bp1 bp2 w)
[*](setq w (/ (* 5 w) 3))
[*](setq cp1 (polar bp1 (+ ang1 pi2) w)
[*] cp2 (polar bp1 (+ ang1 3pi2) w)
[*] cp3 (polar bp2 (+ ang1 pi2) w)
[*] cp4 (polar bp2 (+ ang1 3pi2) w)
[*] cp5 (polar bp1 (+ ang1 pi) w)
[*] cp6 (polar bp2 ang1 w)
[*]);求得长圆孔中心轴线的六个关键点
[*];;------绘制长圆孔中心线------
[*](fy_lineformat (makeline cp1 cp2) "中心线" "CENTER" 0.4 6)
[*](fy_lineformat (makeline cp3 cp4) "中心线" "CENTER" 0.4 6)
[*](fy_lineformat (makeline cp5 cp6) "中心线" "CENTER" 0.4 6)
[*](setvar "osmode" gj_oo)
[*](setvar "ORTHOMODE" oldorh)
[*](princ)
[*])
[*];;画长圆孔---(一级)----------
[*](defun cykong (bp1 bp2 w / ang p1 p2 p3 p4)
[*](setq
[*] ang (angle bp1 bp2)
[*] p1 (polar bp1 (+ ang pi2) w)
[*] p2 (polar bp1 (+ ang 3pi2) w)
[*] p3 (polar bp2 (+ ang pi2) w)
[*] p4 (polar bp2 (+ ang 3pi2) w)
[*])
[*](entmake (list '(0 . "LWPOLYLINE") '(100 . "AcDbEntity") '(67 . 0) '(100 . "AcDbPolyline") '(90 . 5) '(70 . 1) (cons 10 p2) (cons 42 0)
[*] (cons 10 p4) (cons 42 1) (cons 10 p3)(cons 42 0) (cons 10 p1) (cons 42 1)(cons 10 p2) (cons 42 1) '(210 0.0 0.0 1.0))
[*])
[*])
[*];;--------格式画线----(一级)--------
[*];;参数:图元名 图层 线型 比例因子 颜色
[*](defun fy_lineformat (enam lay lt sc col / qm40 obj)
[*](cond
[*] ((= lay nil)
[*] (setq lay (dxf1 enam 8))
[*] )
[*] ((= lt nil)
[*] (setq lt (ss-linetype enam))
[*] )
[*] ((= col nil)
[*] (setq col (ss-getcolor enam))
[*] )
[*])
[*](setq obj (en2obj enam))
[*](vla-put-layer obj lay)
[*](vla-put-Linetype obj lt)
[*](vla-put-Color obj col)
[*](setq qm40 (dxf1 (tblsearch "ltype" lt) 40))
[*](if (and (/= qm40 0) (/= sc 0))
[*] (vla-put-LinetypeScale obj sc)
[*] (vla-put-LinetypeScale obj (* 0.01 (getvar "DIMLFAC")))
[*])
[*](vla-update obj)
[*])
[*];-------生成一条line----(一级)------------------------
[*];;参数:pt1:起点,pt2:终点,均为三维点,即(x y z)
[*](defun makeline (pt1 pt2)
[*](entmakex (list '(0 . "line") (cons 10 pt1) (cons 11 pt2)))
[*])
趣意人生
发表于 2021-12-7 22:42:40
谢谢大师的分享!
p-3-ianlcc
发表于 2021-12-8 08:53:59
谢谢大师的分享!
很棒!
langjs
发表于 2021-12-9 14:40:59
xiao88gang 发表于 2021-12-7 16:55
谢谢大师的分享,非常实用,怎么能把中心线去掉呢?
把所有类似(entmake (list '(0 . "line") (cons 8 "03中心线层") (cons 10 (polar pt1 (+ r (* 0.5 pi)) (+ d dbl)))的语句删除
uualice2020
发表于 2021-12-9 20:55:44
感谢大师分享!
ccc230
发表于 2021-12-10 07:25:45
好,受用了
对往事说
发表于 2021-12-11 15:51:09
真的不错,很实用。但是如果能先输入数据,最后选点,可能会更好。点是腰孔的中心。
Aries
发表于 2021-12-13 10:16:16
不错不错