babyred 发表于 2007-5-30 13:45:00

[求助]关于SPLINE组值的提取

本帖最后由 作者 于 2007-5-30 14:45:14 编辑 <br /><br /> <p>刚刚接触LISP,想将样条曲线的一些重要参数提取出来,知道(entget (car (entsel)));可以显示组码和组值</p><p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt;"><font face="Times New Roman">&lt;</font>图元名<font face="Times New Roman">: 7ef4fe78&gt;) (0 . "SPLINE") (330 . &lt;</font>图元名<font face="Times New Roman">: 7ef4fcf8&gt;) (5 . "87") (100 . "AcDbEntity") (67 . 0) (410 . "Model") (8 . "0") (100 . "AcDbSpline") (210 0.0 0.0 1.0) (70 . 8) (71 . 3) (72 . 10) (73 . 6) (74 . 4) (42 . 1.0e-010) (43 . 1.0e-010) (44 . 1.0e-010) (12 0.139984 -0.990154 0.0) (13 -0.779531 -0.626364 0.0) (40 . 0.0) (40 . 0.0) (40 . 0.0) (40 . 0.0) (40 . 244.156) (40 . 601.112) (40 . 847.714) (40 . 847.714) (40 . 847.714) (40 . 847.714) (10 619.062 842.202 0.0) (10 630.454 761.618 0.0) (10 495.914 469.452 0.0) (10 924.454 699.482 0.0) (10 1141.31 412.322 0.0) (10 1077.23 360.835 0.0) (11 619.062 842.202 0.0) (11 593.489 599.388 0.0) (11 949.37 571.699 0.0) (11 1077.23 360.835 0.0))</font></p><p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt;"><font face="Times New Roman">我想提取其中一些组值后的组码,怎么办呢</font></p><p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt;"><font face="Times New Roman">比如我想提取组码是73的组值6这个代表控制点的个数,想把它提取并显示出来</font></p>

babyred 发表于 2007-5-30 15:42:00

没人知道么?

babyred 发表于 2007-5-30 16:38:00

<p>我查到将组群付给变量s为list类型,list长度也可以用vl-list-length提取</p><p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt;"><font face="Times New Roman">((-1 . &lt;</font>图元名<font face="Times New Roman">: 7ef5edb8&gt;)</font></p><p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt;"><font face="Times New Roman"><span style="mso-spacerun: yes;">&nbsp;(0 . "LINE")</font></span></p><p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt;"><font face="Times New Roman"><span style="mso-spacerun: yes;">&nbsp;(330 . &lt;</font></span>图元名<font face="Times New Roman">: 7ef5ed18&gt;)</font></p><p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt;"><font face="Times New Roman"><span style="mso-spacerun: yes;">&nbsp;(5 . "37")</font></span></p><p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt;"><font face="Times New Roman"><span style="mso-spacerun: yes;">&nbsp;(100 . "AcDbEntity")</font></span></p><p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt;"><font face="Times New Roman"><span style="mso-spacerun: yes;">&nbsp;(67 . 0)</font></span></p><p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt;"><font face="Times New Roman"><span style="mso-spacerun: yes;">&nbsp;(410 . "Model")</font></span></p><p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt;"><font face="Times New Roman"><span style="mso-spacerun: yes;">&nbsp;(8 . "0")</font></span></p><p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt;"><font face="Times New Roman"><span style="mso-spacerun: yes;">&nbsp;(100 . "AcDbLine")</font></span></p><p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt;"><font face="Times New Roman"><span style="mso-spacerun: yes;">&nbsp;(10 71.7657 149.7 0.0)</font></span></p><p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt;"><font face="Times New Roman"><span style="mso-spacerun: yes;">&nbsp;(11 202.085 225.3 0.0) </font></span></p><p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt;"><font face="Times New Roman">(210 0.0 0.0 1.0))</font></p><p>对于直线长度为12</p><p>那么我想提取感兴趣的比如第十一行的组码对应的值怎么办啊也就是<font face="Times New Roman"> 202.085 225.3 0.0</font></p><p><font face="Times New Roman">用什么语句啊,我对lisp实在不了解啊</font></p><p><font face="Times New Roman">有哪位知道的帮帮忙啊</font></p><p><font face="Times New Roman">在线等</font></p>

phoenixdjq 发表于 2007-5-30 21:05:00

<p>(cdr (assoc 73 a))</p><p>a是已经赋值的变量</p>

zml84 发表于 2007-5-31 13:57:00

<pre><font face="Fixedsys" color="#990099"></font><font face="Fixedsys" color="#990099">对象DXF群组码</font>见:http://zml84.blog.sohu.com/24654857.html<br/>从中找出你所感兴趣的组码,然后使用assoc函数。<br/></pre>

babyred 发表于 2007-5-31 14:31:00

多谢提示,我再研究研究

babyred 发表于 2007-5-31 14:46:00

<p>还想问一下,我想把组码和组值按顺序存在excel表里,比如</p><p><font face="Times New Roman">(100 . "AcDbEntity")100存在1行1列;AcDbEntity存在1行2列;</font></p><p><font face="Times New Roman">(10 71.7657 149.7 0.0)10存在2行1列;71.7657存在2行2列;149.7存在2行3列;0.0存在2行4列;</font></p><p><font face="Times New Roman">可以实现么,实现起来困难么</font></p><p><font face="Times New Roman">谢谢各位高手指教</font></p>

寒潮大冬瓜 发表于 2024-8-23 14:59:04

本帖最后由 寒潮大冬瓜 于 2024-8-23 15:00 编辑

https://atlisp.cn/docs/autolisp/DXF/dxf_0640.html

组码 说明
100 子类标记 (AcDbSpline)
210 法向矢量(如果样条曲线为非平面型,则省略)
DXF:X 值;APP:三维矢量
220, 230 DXF:法向矢量的 Y 值和 Z 值(可选)
70 样条曲线标志(按位编码):
1 = 闭合样条曲线
2 = 周期性样条曲线
4 = 有理样条曲线
8 = 平面
16 = 线性(同时还设置平面位)
71 样条曲线的阶数
72 节点数
73 控制点数
74 拟合点数(如果有)
42 节点公差(默认值 = 0.0000001)
43 控制点公差(默认值 = 0.0000001)
44 拟合公差(默认值 = 0.0000000001)
12 起点切向 可以省略(在 WCS 中)
DXF:X 值;APP:三维点
22, 32 DXF:起点切向的 Y 值和 Z 值 可以省略(在 WCS 中)
13 端点切向 可以省略(在 WCS 中)
DXF:X 值;APP:三维点
23, 33 DXF:端点切向的 Y 值和 Z 值 可以省略(在 WCS 中)
40 节点值(每个节点一个条目)
41 权值(如果不为 1);对于多组对,如果均不为 1,则出现。
10 控制点(在 WCS 中);每个控制点一个条目
DXF:X 值;APP:三维点
20, 30 DXF:控制点的 Y 值和 Z 值(在 WCS 中);每个控制点一个条目
11 拟合点(在 WCS 中);每个拟合点一个条目
DXF:X 值;APP:三维点
21, 31 DXF:拟合点的 Y 值和 Z 值(在 WCS 中);每个拟合点一个条目


页: [1]
查看完整版本: [求助]关于SPLINE组值的提取