lisp组码
gpszx1981
gpszx1981 Lv.4
2007年04月27日 19:27:01
只看楼主

组码 说明-5 APP:persistent reactor 链表-4 APP:条件运算符(仅用于 ssget)-3 APP:扩展数据 (XDATA) 标记(固定)-2 APP:图元名引用 (固定)-1 APP:图元名。每次打开图形时它都改变,且不被保存。(固定)0 表示图元类型的文字字符串(固定)1 图元的主要文字值2 名称(属性标记、块名称等)39145 其他的文字值或名称值

组码 说明
-5 APP:persistent reactor
链表
-4 APP:条件运算符(仅用于 ssget)
-3 APP:扩展数据 (XDATA)
标记(固定)
-2 APP:图元名引用 (固定)
-1 APP:图元名。每次打开图形时它都改变,且不被保存。(固定)
0 表示图元类型的文字字符串(固定)
1 图元的主要文字值
2 名称(属性标记、块名称等)
39145 其他的文字值或名称值
5 图元句柄。最多 16 位十六进制数字的文字字符串(固定)
6 线型名(固定)
7 文字样式名(固定)
8 图层名(固定)
9 DXF:变量名标识符(仅用于
DXF 文件的 HEADER 区域)。
10 主要点。此点为直线或文字图元的起点,圆的圆心等等。
DXF:主要点的 X 值(其后为 Y 和 Z 值的组码 20 和 30) APP:三维点(三个实数构成的表)
39404 其他点。
DXF:其他点的 X 值(其后为 Y 和 Z 值的组码 21-28 和 31-38) APP:三维点(三个实数构成的表)
20, 30 DXF:主要点的 Y 和
Z 值
21-28, 31-37 DXF:其他点的 Y 和
Z 值
38 DXF:如果非零,则为图元的标高
39 如果非零,则为图元的厚度(固定)
40-48 浮点值(文字高度、比例因子等)
48 线型比例。浮点标量值。缺省值适用于所有图元类型。
49 可重复的浮点值。一个图元中的可变长度表(例如 LTYPE 表中的虚线长度)中可出现多个组码
49。组码 7x 总是在第一个组码 49 前出现,用于指定表的长度。
50-58 角度(在 DXF 文件中单位为度,在 AutoLISP 和 ARX 应用程序中单位为弧度)。
60 表示图元可见性的整数值。不赋值或值为 0 时表示可见;为 1 时表示不可见。
62 颜色代码(固定)
66 “图元跟随”标志(固定)
67 空间,即模型空间或图纸空间(固定)
68 APP:表示视口打开但不可见、未激活或者关闭。
69 APP:视口标识数字。
70-78 整数值,如重复部分的计数器、标志位或模式等。
90-99 32 位整数值
100 子类数据标记(把继承下来的类名当作字符串)。由具体类继承下来的所有对象和图元类都必须有此项。此标记用于分离某个对象中由不同的类定义的数据。它也满足从
ARX 继承下来的每个独立的具体类的 DXF 命名需要(请参见子类标记)。
102 控制字符串,其后为“{<任意名称>”或
"}"。除了字符串必须以 "{" 开始外,它与外部数据组码
1002 类似。其后可跟任意字符串,且此字符串的解释取决于应用程序。另一个可用的控制字符串为
"}",它标识组的结束。如上所述,除了在执行图形核查操作期间外 AutoCAD
一般不解释这些字符串;它们仅用于应用程序。
105 DIMVAR 符号表条目对象句柄。
210 拉伸方向(固定)。
DXF:拉伸方向的 X 值 APP:三维拉伸方向矢量
220, 230 DXF:拉伸方向的 Y 和
Z 值
280-289 8 位整数值
290-299 布尔标志值
300-309 任意的文字字符串
310-319 任意二进制数据组,与组码 1004 具有相同表示法和限制:最长为 254 个字符的十六进制字符串表示最长为
127 个字节的数据数据组。
320-329 任意对象句柄。句柄值保留原样,在执行 INSERT 和 XREF 操作时它们不被转化。
330-339 软键指针句柄。任意指向同一 DXF 文件或图形中的其他对象的软键指针,在执行 INSERT
和 XREF 操作时被转化。
340-349 硬键指针句柄。任意指向同一 DXF 文件或图形中的其他对象的硬键指针,在执行 INSERT
和 XREF 操作时被转化。
350-359 软键从属句柄。链接到同一 DXF 文件或图形中其他对象的任意软键从属链接,在执行 INSERT
和 XREF 操作时被转化。
360-369 硬键从属句柄。链接到同一 DXF 文件或图形中其他对象的任意硬键从属链接,在执行 INSERT
和 XREF 操作时被转化。
370-379 线宽枚举值 (AcDb::LineWeight)。作为短整数保存并移动。自定义非图元对象可使用全部范围组码,但图元类只能在其描述中使用371-379的DXF组码,因为AutoCAD和AutoLISP都总是采用370组码作为图元的线宽。在这里370组码就象其它的“公用”图元字段一样。
380-389 打印样式名类型枚举(AcDb::PlotStyleNameType)。作为短整数保存并移动。自定义非图元对象可使用全部范围组码,但图元类只能在其描述中使用381-389的DXF组码,其原因与上面的线宽范围相同。
390-399 描述打印样式名对象的句柄值,本质上是硬指针,但它有一不同的范围以使向后兼容能容易地处理。作对象的ID(在DXF文件中为句柄)和在AutoLISP中为特殊的类型保存并移动。自定义非图元对象可使用全部范围组码,但图元类只能在其描述中使用391-399的DXF组码,其原因与上面的线宽范围相同。
400-409 16位整数
410-419 字符串
999 DXF:999 组码表示其后为注释字符串行。DXFOUT
不在 DXF 输出文件中包括此组;DXFIN 能识别词组码,但忽略其后的注释。通过 999
组码,用户可以在所编辑的 DXF 文件中包括注释。
1000 扩展数据中的 ASCII 字符串(最长 255 个字节)。
1001 扩展数据的已注册应用程序名(ASCII 字符串,最长 31 个字节)。
1002 扩展数据控制字符串("{" 或 "}")。
1003 扩展数据图层名。
1004 扩展数据中的字节数据组(最长 127 字节)。
1005 扩展数据中的图元句柄。文字字符串,最多 16 位十六进制数字。
1010 扩展数据中的点
DXF:X 值(其后跟组码 1020 和 1030) APP:三维点
1020, 1030 DXF:点的 Y 和
Z 值
1011 扩展数据中的三维世界空间位置

DXF:X 值(其后跟组码 1021 和 1031):三维点
1021, 1031 DXF:世界空间位置的 Y 和
Z 值。
1012 扩展数据中的三维世界空间位移

DXF:X 值(其后跟组码 1022 和 1032):三维矢量
1022, 1032 DXF:世界空间位移的 Y 和
Z 值
1013 扩展数据中的三维世界空间方向
DXF:X 值(其后跟组码 1022 和 1032) APP:三维矢量
1023, 1033 DXF:世界空间方向的 Y 和
Z 值
1040 扩展数据浮点值。
1041 扩展数据距离值。
1042 扩展数据比例因子。
1070 扩展数据 16 位符号整数。
1071 扩展数据 32 位符号整数。
gpszx1981
2007年04月27日 19:38:08
2楼
如何能获得实体的所有DXF组码?

(defun c:lk (/ e )
(setq e (car (entsel))
eenn(entget e (list "*")))
(princ "\nThe Object’s (X)data:\n")(princ eenn)(princ)
)

(defun c:lkn (/ e en in)
(setq e(car (entsel)) in 0
en(entget e))
(princ "\n主实体数据为:")(princ en)(princ)
(while (and (setq e(entnext e)) (/= (dxf 0 en) "SEQEND") )
(setq en(entget e (list "*")) in(1+ in))
(princ (strcat "\n次实体 " (itoa in) " 数据为:" ))(princ en)
) (princ)
)

回复
gpszx1981
2007年04月27日 19:39:52
3楼
组码范围 组值类型
0-9 字符串 (已经去除了255个字符的限制。尽管所有行被限制在2049个字节之内,但每行的字节数却没有直接限制。)
10-59 双精度三维点
60-79 16 位整数值
90-99 32 位整数值
100 字符串(最多 255 个字符,对于 UNICODE 字符串则更少)
102 字符串(最多 255 个字符,对于 UNICODE 字符串则更少)
105 表示十六进制句柄值的字符串
140-147 双精度标量浮点值
170-175 16 位整数值
280-289 8 位整数值
300-309 任意文字字符串
310-319 表示二进制数据组的十六进制值的字符串
320-329 表示十六进制句柄值的字符串
330-369 表示十六进制对象标识符的字符串
370-379 8 位整数值
380-389 8 位整数值
390-399 表示十六进制句柄值的字符串
400-409 16 位整数值
410-419 字符串
999 注释(字符串)
1000-1009 字符串(与0-9组码范围的限制一样)
1010-1059 浮点值
1060-1070 16 位整数值
1071 32 位整数值
回复
gpszx1981
2007年04月27日 19:40:19
4楼
在 DXF 格式中,对象的定义与图元的定义不同:图元有图形表示,而对象则没有图形表示。例如,词典是对象而不是图元。对象通常作为非图形对象来使用,图元则作为图形对象来使用。

在 DXF 文件中,图元可以出现在 BLOCK
和 ENTITIESE 区域中。两个区域中图元的用法一样。

某些定义图元的组码始终会出现,而其他的组码为可选,它们仅在其值与缺省值不同时才出现。

读取 DXF 文件的程序不应该假定说明图元的组码是按照给定次序出现的。与说明图元的组码相连的
0 组码表示此图元已结束。0 组码将开始新图元或表示此区域已结束。

注意
如果用户以表驱动方式(即忽略未定义的组码,且对图元中的组码次序不做任何假定)编写
DXF 处理程序,那么该程序将比较容易针对 AutoCAD 的后续版本做调整。因为 AutoCAD
的性能将不断得到增强,所以图元中将添加一些新的组码以提供更多的功能。

回复
lixiaobinman123
2007年04月29日 09:17:11
5楼
(DEFUN C:GOGOo()
(setvar "cmdecho" 0)
(setq In9 (entsel))
(setq p0 (entget ln9))
(setq wd1 (cdr (assoc 50 p0)))
(setq wd2 (cdr (assoc 51 p0)))
(setq p01 (cdr (assoc 10 p0)))
(setq r (cdr (assoc 40 P0)))
(setq p1 (polar p01 wd1 r))
(setq p2 (polar p01 wd1 (+ r r)))
(setq p3 (polar p01 wd2 r))
(setq p4 (polar p01 wd2 (+ r r)))
(command ".line" p1 p2 "")
(command ".line" p3 p4 "")
)

请问大侠这个LISP错在那里?
有劳啦!
Command: ap APPLOAD SSSSGGGG.lsp successfully loaded.
Command: ; error: bad argument type: 2D/3D point: nil
Command:
回复
gpszx1981
2007年05月01日 17:53:00
6楼
(setq In9 (car (entsel))) ;获得图元名称
最后最好加上
(PRINC)
还有一处笔误!!!
晕 我半天~~
(setq p0 (entget ln9)) ln9 In9一样么??
还有不知道你 是什么意思吧~~
给文字加框么 ?
回复
lixiaobinman123
2007年05月08日 17:46:38
7楼
(defun c:swww()
(setvar "cmdecho" 0)
(setq In8 (entsel))
(setq In9 (entget (car In8)))
(setq wd1 (cdr (assoc 50 In9)))
(setq wd2 (cdr (assoc 51 In9)))
(setq p01 (cdr (assoc 10 In9)))
(setq r (cdr (assoc 40 In9)))
(setq p1 (polar p01 wd1 r))
(setq p2 (polar p01 wd1 (/ r 4)))
(setq p3 (polar p01 wd2 r))
(setq p4 (polar p01 wd2 (/ r 4)))
(command ".line" p1 p2 "")
(command ".line" p3 p4 "")
) (PRINC)

成了!
多谢各位大侠!!!
回复
lixiaobinman123
2007年05月08日 17:50:51
8楼
利用已有的圆弧来画两条直线!
用在风管的弯头上!
回复
功夫皇帝
2007年06月26日 17:08:29
9楼

较深奥
回复

相关推荐

APP内打开