明经CAD社区

 找回密码
 注册

QQ登录

只需一步,快速开始

搜索
查看: 303|回复: 7

[源码] entmake函数常用图元组码

  [复制链接]
发表于 3 天前 | 显示全部楼层 |阅读模式

  1. ;;entmake 创建图元示例
  2. (setq pts '(0 0 0)
  3.       pte '(100 100 0)
  4. )
  5. ;创建直线
  6. (entmake
  7.   (list
  8.     ;;必须组码
  9.     (cons 0 "LINE")
  10.     ;起点坐标
  11.     (cons 10 pts)
  12.     ;终点坐标
  13.     (cons 11 pte)

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

  25.     ;;常用专属可选组码
  26.     ;无
  27.   )
  28. )
  29. ;创建圆
  30. (setq pt '(50 50 0)
  31.       r  25
  32. )
  33. (entmake
  34.   (list
  35.     ;;必须组码
  36.     (cons 0 "CIRCLE")
  37.     ;圆心坐标
  38.     (cons 10 pt)
  39.     ;半径
  40.     (cons 40 r)

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

  52.     ;;常用专属可选组码
  53.     ;无
  54.   )
  55. )
  56. ;创建圆弧
  57. (setq pt   '(100 100 0)
  58.       r    25
  59.       angs 0
  60.       ange PI
  61. )
  62. (entmake
  63.   (list
  64.     ;;必须组码
  65.     (cons 0 "ARC")
  66.     ;圆心坐标
  67.     (cons 10 pt)
  68.     ;半径
  69.     (cons 40 r)
  70.     ;起点角度 弧度制
  71.     (cons 50 angs)
  72.     ;端点角度 弧度制
  73.     (cons 51 ange)

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

  85.     ;;常用专属可选组码
  86.     ;无
  87.   )
  88. )

  89. ;创建单行文字
  90. (setq pt  '(100 100 0)
  91.       h   10
  92.       str "如果当时0809"
  93. )
  94. (entmake
  95.   (list
  96.     ;;必须组码
  97.     (cons 0 "TEXT")
  98.     ;插入点坐标
  99.     (cons 10 pt)
  100.     ;文本高度
  101.     (cons 40 h)
  102.     ;文本内容
  103.     (cons 1 str)

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

  109.     ;;常用专属可选组码
  110.     ;文本样式 若不存在 则采用默认值
  111.     (cons 7 "仿宋")
  112.     ; 对齐
  113.     (cons 72 2)
  114.     (cons 73 2)
  115.     ; 对齐坐标
  116.     (cons 11 '(50 50 0))
  117.     ; 旋转
  118.     (cons 50 0.5)
  119.     ; 宽度因子
  120.     (cons 41 0.8)
  121.     ; 倾斜
  122.     (cons 51 0.1)
  123.   )
  124. )
  125. ;创建多段线
  126. (setq pt1 '(0 0 0)
  127.       pt2 '(100 0 0)
  128.       pt3 '(100 100 0)
  129.       pt4 '(0 100 0)
  130. )
  131. (entmake
  132.   (list
  133.     ;;必须组码
  134.     (cons 0 "LWPOLYLINE")
  135.     (cons 100 "AcDbEntity")
  136.     (cons 100 "AcDbPolyline")
  137.     ;顶点数量
  138.     (cons 90 4)
  139.     ;插入顶点坐标及各边参数
  140.     (cons 10 pt1)
  141.     (cons 10 pt2)
  142.     (cons 40 2) ;可选 起点宽度
  143.     (cons 41 1) ;可选 端点宽度
  144.     (cons 42 1) ;可选 凸度
  145.     (cons 10 pt3)
  146.     (cons 10 pt4)
  147.     (cons 40 1) ;可选 起点宽度
  148.     (cons 41 2) ;可选 端点宽度
  149.     (cons 42 1) ;可选 凸度

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

  161.     ;;常用专属可选组码
  162.     ;全局宽度 设置后局部宽度失效
  163.     (cons 43 1)
  164.     ;标高
  165.     (cons 38 1)
  166.     ;闭合
  167.     (cons 70 1)
  168.   )
  169. )

回复

使用道具 举报

发表于 3 天前 | 显示全部楼层
这个在论坛里就有呀
回复 支持 反对

使用道具 举报

发表于 昨天 07:36 | 显示全部楼层
xcmdos 发表于 2024-11-28 15:27
这个在论坛里就有呀

他这个 加注释了,方便新人 理解
回复 支持 反对

使用道具 举报

发表于 昨天 09:36 | 显示全部楼层
很好→很棒!很好~很棒!!很好……很棒!!!
回复 支持 反对

使用道具 举报

发表于 昨天 15:46 | 显示全部楼层
本帖最后由 llsheng_73 于 2024-11-30 16:08 编辑

entmake创建图元必要条件(慢慢更新)
http://bbs.mjtd.com/forum.php?mo ... 2482&fromuid=202795
(出处: 明经CAD社区)
授人鱼不如授之以渔
  1. (defun NecDXF(e / s en);;;图元必要组码
  2.   (vl-some(function(lambda(x / a)
  3.                       (and(setq a(vl-remove x en)e(entmakeX a))
  4.                           (setq s(cons e s)en a)nil)))
  5.            (setq en(entget e)))
  6.   (vl-every(function entdel)s)
  7.   en)

但是这个渔具显然不是那么好用,对于一些特殊图元,并不能得到准确结果,比如图层、文字样式等:如果不出现名称这个组注定无法创建,而保留名称组又因为名称重复导致创建新图元失败,最终程序认为所有组都是必要的,显然这个结论是错误的。
最有效的办法是自己结合图元实例,认真查看DXF帮助,通过反复比对,加深对各个组的意义以及必要性进行理解,熟悉对非必要组它按什么原则进行处理等

回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

小黑屋|手机版|CAD论坛|CAD教程|CAD下载|联系我们|关于明经|明经通道 ( 粤ICP备05003914号 )  
©2000-2023 明经通道 版权所有 本站代码,在未取得本站及作者授权的情况下,不得用于商业用途

GMT+8, 2024-12-1 11:39 , Processed in 0.180789 second(s), 24 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表