如果当时0809 发表于 2024-11-28 12:17:59

entmake函数常用图元组码


;;entmake 创建图元示例
(setq pts '(0 0 0)
      pte '(100 100 0)
)
;创建直线
(entmake
(list
    ;;必须组码
    (cons 0 "LINE")
    ;起点坐标
    (cons 10 pts)
    ;终点坐标
    (cons 11 pte)

    ;;常用通用可选组码
    ;设置图元颜色 0-256 0表示随块 256表示随层
    (cons 62 1)
    ;设置图元图层 若不存在 则新建该图层
    (cons 8 "1")
    ;设置图元线形 若未加载 则报错
    (cons 6 "CENTER")
    ;设置图元线形比例
    (cons 48 0.5)
    ;设置图元线宽 线宽值x100
    (cons 370 50)

    ;;常用专属可选组码
    ;无
)
)
;创建圆
(setq pt '(50 50 0)
      r25
)
(entmake
(list
    ;;必须组码
    (cons 0 "CIRCLE")
    ;圆心坐标
    (cons 10 pt)
    ;半径
    (cons 40 r)

    ;;常用通用可选组码
    ;设置图元颜色 0-256 0表示随块 256表示随层
    (cons 62 1)
    ;设置图元图层 若不存在 则新建该图层
    (cons 8 "1")
    ;设置图元线形 若未加载 则报错
    (cons 6 "CENTER")
    ;设置图元线形比例
    (cons 48 0.5)
    ;设置图元线宽 线宽值x100
    (cons 370 50)

    ;;常用专属可选组码
    ;无
)
)
;创建圆弧
(setq pt   '(100 100 0)
      r    25
      angs 0
      ange PI
)
(entmake
(list
    ;;必须组码
    (cons 0 "ARC")
    ;圆心坐标
    (cons 10 pt)
    ;半径
    (cons 40 r)
    ;起点角度 弧度制
    (cons 50 angs)
    ;端点角度 弧度制
    (cons 51 ange)

    ;;常用通用可选组码
    ;设置图元颜色 0-256 0表示随块 256表示随层
    (cons 62 1)
    ;设置图元图层 若不存在 则新建该图层
    (cons 8 "1")
    ;设置图元线形 若未加载 则报错
    (cons 6 "CENTER")
    ;设置图元线形比例
    (cons 48 0.5)
    ;设置图元线宽 线宽值x100
    (cons 370 50)

    ;;常用专属可选组码
    ;无
)
)

;创建单行文字
(setq pt'(100 100 0)
      h   10
      str "如果当时0809"
)
(entmake
(list
    ;;必须组码
    (cons 0 "TEXT")
    ;插入点坐标
    (cons 10 pt)
    ;文本高度
    (cons 40 h)
    ;文本内容
    (cons 1 str)

    ;;常用通用可选组码
    ;设置图元颜色 0-256 0表示随块 256表示随层
    (cons 62 1)
    ;设置图元图层 若不存在 则新建该图层
    (cons 8 "1")

    ;;常用专属可选组码
    ;文本样式 若不存在 则采用默认值
    (cons 7 "仿宋")
    ; 对齐
    (cons 72 2)
    (cons 73 2)
    ; 对齐坐标
    (cons 11 '(50 50 0))
    ; 旋转
    (cons 50 0.5)
    ; 宽度因子
    (cons 41 0.8)
    ; 倾斜
    (cons 51 0.1)
)
)
;创建多段线
(setq pt1 '(0 0 0)
      pt2 '(100 0 0)
      pt3 '(100 100 0)
      pt4 '(0 100 0)
)
(entmake
(list
    ;;必须组码
    (cons 0 "LWPOLYLINE")
    (cons 100 "AcDbEntity")
    (cons 100 "AcDbPolyline")
    ;顶点数量
    (cons 90 4)
    ;插入顶点坐标及各边参数
    (cons 10 pt1)
    (cons 10 pt2)
    (cons 40 2) ;可选 起点宽度
    (cons 41 1) ;可选 端点宽度
    (cons 42 1) ;可选 凸度
    (cons 10 pt3)
    (cons 10 pt4)
    (cons 40 1) ;可选 起点宽度
    (cons 41 2) ;可选 端点宽度
    (cons 42 1) ;可选 凸度

    ;;常用通用可选组码
    ;设置图元颜色 0-256 0表示随块 256表示随层
    (cons 62 1)
    ;设置图元图层 若不存在 则新建该图层
    (cons 8 "1")
    ;设置图元线形 若未加载 则报错
    (cons 6 "CENTER")
    ;设置图元线形比例
    (cons 48 0.5)
    ;设置图元线宽 线宽值x100
    (cons 370 50)

    ;;常用专属可选组码
    ;全局宽度 设置后局部宽度失效
    (cons 43 1)
    ;标高
    (cons 38 1)
    ;闭合
    (cons 70 1)
)
)

zmzk 发表于 2024-11-30 07:36:56

xcmdos 发表于 2024-11-28 15:27
这个在论坛里就有呀

他这个 加注释了,方便新人 理解

xcmdos 发表于 2024-11-28 15:27:04

这个在论坛里就有呀

gf123 发表于 2024-11-29 22:45:36

谢谢分享。。。。

gf123 发表于 2024-11-30 08:31:32

谢谢分享。。

寒潮大冬瓜 发表于 2024-11-30 09:36:23

很好→很棒!很好~很棒!!很好……很棒!!!

青冥 发表于 2024-11-30 10:10:29

清晰明了!

llsheng_73 发表于 2024-11-30 15:46:23

本帖最后由 llsheng_73 于 2024-11-30 16:08 编辑

entmake创建图元必要条件(慢慢更新)
http://bbs.mjtd.com/forum.php?mo ... 2482&fromuid=202795
(出处: 明经CAD社区)
授人鱼不如授之以渔
(defun NecDXF(e / s en);;;图元必要组码
(vl-some(function(lambda(x / a)
                      (and(setq a(vl-remove x en)e(entmakeX a))
                        (setq s(cons e s)en a)nil)))
         (setq en(entget e)))
(vl-every(function entdel)s)
en)
但是这个渔具显然不是那么好用,对于一些特殊图元,并不能得到准确结果,比如图层、文字样式等:如果不出现名称这个组注定无法创建,而保留名称组又因为名称重复导致创建新图元失败,最终程序认为所有组都是必要的,显然这个结论是错误的。
最有效的办法是自己结合图元实例,认真查看DXF帮助,通过反复比对,加深对各个组的意义以及必要性进行理解,熟悉对非必要组它按什么原则进行处理等

页: [1]
查看完整版本: entmake函数常用图元组码