kucha007 发表于 2025-1-31 23:48:09

【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:03:04

本帖最后由 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))));插入块

kucha007 发表于 2025-2-1 00:16:16

此贴生成的填充有4个控制点,可以方便调整

尘缘一生 发表于 2025-2-1 09:25:14

本帖最后由 尘缘一生 于 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 17:22:13

本帖最后由 bai2000 于 2025-2-1 20:05 编辑

新年大家好,都辛苦了一年,运行程序出现:Error: 参数类型错误: numberp: "1"

hubeiwdlue 发表于 2025-2-1 19:28:40

谢谢分享,这个画钢筋的点筋很好。

kucha007 发表于 2025-2-1 21:34:44

hubeiwdlue 发表于 2025-2-1 19:28
谢谢分享,这个画钢筋的点筋很好。

如果是点筋,应该还需要考虑填充关联的问题。不过点筋一般都是用DO画实心环吧

hubeiwdlue 发表于 2025-2-1 21:42:37

kucha007 发表于 2025-2-1 21:34
如果是点筋,应该还需要考虑填充关联的问题。不过点筋一般都是用DO画实心环吧

是的,但是实心环捕捉不到圆上下左右四个边点,修改配筋图的时候,会带来一些不便。
页: [1]
查看完整版本: 【entmake】生成圆形透明填充