【entmake】生成圆形透明填充
本帖最后由 kucha007 于 2025-2-1 13:40 编辑参考资料:
https://www.cadtutor.net/forum/topic/69742-entmake-of-a-circular-hatch/
http://www.theswamp.org/index.php?topic=50238.msg553917#msg553917
(entmakeX
(list
(cons 0 "HATCH")
(cons 100 "AcDbEntity")
(cons 8 "0");图层
(cons 62 0);颜色随块
(cons 440(+ (lsh 2 24) (fix (- 255 (* 80 2.55)))));80%透明度
(cons 100 "AcDbHatch")
(cons 10 '(0.0 0.0 0.0))
(cons 210 '(0.0 0.0 1.0))
(cons 2 "SOLID");图案名
(cons 70 1);实体填充1;图案填充0
(cons 71 0);关联1;无关联0
(cons 91 1);边界路径(环)数
(cons 92 1);边界路径类型:1外部
(cons 93 1);边数
(cons 72 2);边类型:2圆弧
(cons 10 '(0.0 0.0 0.0));圆心
(cons 40 1.0);半径
(cons 50 0.0);起点角度
(cons 51 (* 2 pi));端点角度
(cons 73 1);逆时针标志
(cons 97 0);源边界对象数
(cons 75 2);填充样式:2填充整个区域
(cons 76 1);图案类型:1预定义
(cons 98 1);种子点数
(cons 10 '(0.0 0.0 0.0))
)
)
本帖最后由 kucha007 于 2025-2-1 12:05 编辑
尘缘一生 发表于 2025-2-1 09:25
我给大家提供另一个做法:SLdesignV3.0三领设计的。
对于透明的话,我没有想到用到什么样的图纸上,没 ...
感谢分享。我用entmake主要是为了编块,我补个例子吧
(progn
(entmake (list '(0 . "Block") (cons 2 "1-HMkPT") '(70 . 0) (cons 10 '(0.0 0.0 0.0))))
(entmake (list '(0 . "CIRCLE") (cons 8 "0") (cons 10 '(0.0 0.0 0.0)) (cons 40 1.0)))
(entmake
(list
(cons 0 "HATCH")
(cons 100 "AcDbEntity")
(cons 8 "0");图层
(cons 62 0);颜色随块
(cons 440(+ (lsh 2 24) (fix (- 255 (* 80 2.55)))));80%透明度
(cons 100 "AcDbHatch")
(cons 10 '(0.0 0.0 0.0))
(cons 210 '(0.0 0.0 1.0))
(cons 2 "SOLID");图案名
(cons 70 1);实体填充1;图案填充0
(cons 71 0);关联1;无关联0
(cons 91 1);边界路径(环)数
(cons 92 1);边界路径类型:1外部
(cons 93 1);边数
(cons 72 2);边类型:2圆弧
(cons 10 '(0.0 0.0 0.0));圆心
(cons 40 1.0);半径
(cons 50 0.0);起点角度
(cons 51 (* 2 pi));端点角度
(cons 73 1);逆时针标志
(cons 97 0);源边界对象数
(cons 75 2);填充样式:2填充整个区域
(cons 76 1);图案类型:1预定义
(cons 98 1);种子点数
(cons 10 '(0.0 0.0 0.0))
)
)
(entmake '((0 . "ENDBLK")))
);创建块
(entmakeX (list '(0 . "INSERT") (cons 8 "0")(cons 2 "1-HMkPT") (cons 10 '(0.0 0.0 0.0))));插入块
此贴生成的填充有4个控制点,可以方便调整 本帖最后由 尘缘一生 于 2025-2-1 10:04 编辑
我给大家提供另一个做法:SLdesignV3.0三领设计的。
对于透明的话,我没有想到用到什么样的图纸上,没作。
说明:如果我们作圆形填充,就应该作这4+1个穴点的,否则,你其他的集成就会有问题。比如:可能的包容盒(当取点位计算最小凸包时),中心线等。
常用图:比如结构图纸的钢筋点。
很遗憾:众多其他二开觉得很不错,其实不然,我就见过不少的,对画实心点,没有4+1个穴点,比如:有的还是用带宽度的的多段线模拟来的。这考虑不周的BUG问题,在"三领设计"是绝对不存在。
[*];;填充点函数---(一级)------
[*];(sl:gangjind 基点 半径图层nil 角度nil 比例mil 颜色nil)
[*];;返回实体名
[*];;SLdesign V3.0 By三领设计 尘缘一生 QQ:15290049
[*](defun sl:gangjind (p0 d tcl tcj tcb tcc / ms nam ha obj)
[*](if (= 1 (vlax-get-Property *AcDocument* 'ActiveSpace)) ;模型1,布局0
[*] (setq ms *Model-Space*)
[*] (setq ms *Paper-Space*)
[*])
[*](entmake (list '(0 . "CIRCLE") (cons 10 p0) (cons 40 d)))
[*](setq nam (entlast))
[*](setq ha (vla-addhatch ms acHatchPatternTypePredefined "SOLID" :vlax-false))
[*](vla-appendouterloop ha (vlax-safearray-fill (vlax-make-safearray vlax-vbobject '(0 . 0)) (list (en2obj nam))))
[*](vla-evaluate ha)
[*](entdel nam)
[*](setq obj (en2obj (entlast)))
[*](if tcb (vlax-put obj 'PatternScale tcb))
[*](if tcj (vlax-put obj 'PatternAngle tcj))
[*](if tcl (vla-put-layer obj tcl))
[*](if tcc (vla-put-color obj tcc))
[*](entlast)
[*])
下面是三领的两个命令:
;slbl 是三领的比例常量,至于SLMSG函数,只不过是支持多语言的个事,提示问题,改了就完了。
[*];;绘制钢筋点------------
[*];;SLdesign V3.0 By三领设计 尘缘一生 QQ:15290049
[*](defun c:gangjind (/ p0)
[*](princ (slmsg "\n 右键重复:" "\n 龄確:" "\n Right click to repeat:"))
[*](setq p0 (cadr (grread 5)))
[*](sl:gangjind p0 (* 0.5 slbl) (slmsg "钢筋" "葵惮" "steelbar") nil nil 1)
[*](command "MOVE" (entlast) "" "non" p0 pause)
[*](princ)
[*])
[*];;填充圆--------------
[*];;SLdesign V3.0 By三领设计 尘缘一生 QQ:15290049
[*](defun c:tcyx (/ p0 p1)
[*](setq p0 (getpoint (slmsg " \n 圆心:" " \n 蛾み:" " \n center of a circle:")))
[*](setq p1 (getpoint p0 (slmsg "\n 半径:" "\n 畖:" "\n radius:")))
[*](sl:gangjind p0 (distance p0 p1) nil nil nil nil)
[*](command "MOVE" (entlast) "" "non" p0 pause)
[*](princ)
[*])
本帖最后由 bai2000 于 2025-2-1 20:05 编辑
新年大家好,都辛苦了一年,运行程序出现:Error: 参数类型错误: numberp: "1" 谢谢分享,这个画钢筋的点筋很好。 hubeiwdlue 发表于 2025-2-1 19:28
谢谢分享,这个画钢筋的点筋很好。
如果是点筋,应该还需要考虑填充关联的问题。不过点筋一般都是用DO画实心环吧 kucha007 发表于 2025-2-1 21:34
如果是点筋,应该还需要考虑填充关联的问题。不过点筋一般都是用DO画实心环吧
是的,但是实心环捕捉不到圆上下左右四个边点,修改配筋图的时候,会带来一些不便。
页:
[1]