linhui12 发表于 2009-5-12 10:46:00

[求助]选取一条POLYLINE后同时获取扩展数据和坐标数据要怎么做?

本帖最后由 作者 于 2009-5-21 22:20:43 编辑

某些通过CAD二次开发生成的“POLYLINE”储存着一些信息,用该软件的“查寻”功能就能方便的得到相应信息。而利用CAD自带的LIST命令却只能查询到图层,颜色,线形,句柄等基本信息。而那些隐藏信息要怎么才能获取到呢?请教各位。。。

ljttjl 发表于 2009-5-12 20:42:00

<p>你说的这些线内可能含有扩展数据。在命令行输入以下代码查询试试,&nbsp; (setq a (entget (car (entsel)) '("*") ))&nbsp;&nbsp; </p>

linhui12 发表于 2009-5-12 22:18:00

<p>谢谢回复</p><p>果然象你说的那样,运行(setq a (entget (car (entsel)) '("*") ))后得到以下代码,</p><p>请问要如何才能分别提取出每个"POLYLINE"中,下列数据中的"AH111-01"和"273X5"位置的值呢</p><p>(既:敲命令-&gt;选取"POLYLINE"-&gt;命令行输出A:"AH111-01",B:"273X5"),先谢谢了</p><p>"ni ^*+0;:,4 ^*+0\\^[ nh ^LR iqoqjqhook QK mk K*: R&gt;&amp; nm mmeoiemm moof ") (1 . <br/>"n fqfffffffffffffffj:rooh n:rono ") (1 . "&gt;,27:&gt;;:- {rn rn _nm mogqoqjqhook <br/>|") (1 . "=0;&amp; {rn rn {rn {m {rn {rn |") (1 . "3*2/ {rn rn {rn {rn {l {n |") (1 <br/>. ",7:33 {rn rn {rn {rn {rn {k {rn {m |") (1 . "9&gt;&lt;: {rn rn {rn {rn {j {l {rn <br/>{i 90-(&gt;-; ,6183: |") (1 . "300/ {rn rn {rn {h {g {k |") (1 . "&lt;01:r,*-9&gt;&lt;: {rn <br/>rn {rn llnoqjhhihhhknfhmk noooqooooooooooghn noooqooooooooooghn n <br/>mqgoljonhggljijlmh:ronl mqgoljonhggljijlmh:ronl rnqmgomfooilkmiklgj:romh <br/>rfiqjmoohjilnfilhkf fiqjmoohjilnfilhkf n V V o n nliqj 90-(&gt;-; V V V V |") (1 . <br/>"300/ {rn rn {rn {rn {f {k |") (1 . "&lt;0:;8: {rn rn {rn {g {g {rn {no -:):-,:; <br/>{j {rn |") (1 . "&lt;0:;8: {rn rn {rn {f {f {rn {nn 90-(&gt;-; {h {rn |") (1 . ":;8: <br/>{rn rn {rn {nm nqnhhgjomilljhiiom:ronj {nm iqmglngjlohnhfjghn {g {nl 90-(&gt;-; _h <br/>*1410(1 |") (1 . ":;8: {rn rn {rn {nk rnqjifijmifomgnil:romj {nk <br/>iqmglngjlohnhfjgim {f {nj 90-(&gt;-; _h *1410(1 |") (1 . "):-+:' {rn rn {rn {no <br/>{ni |") (1 . ":336/,:r&lt;*-): {rn rn {rn llnoqjhhihhhknfhmk noooqooooooooooghn <br/>noooqooooooooooghn rn rjqiomfjifgkmjoiigg:ronl gqjjlkilogjnklimjh:roni <br/>jqknimlknmhgikohng:ronn rfiqjmoohjilnfilhkf fiqjmoohjilnfilhkf n V V |") (1 . <br/>"):-+:' {rn rn {rn {nn {nh |") (1 . ":336/,:r&lt;*-): {rn rn {rn jooo <br/>noooqooooooooojioh noooqooooooooojioh rn rjqiomfjifgkmjoiigg:ronl <br/>gqjjlkilogjnklimjh:roni jqknimlknmhgikohng:ronn rfiqjmoohjilnfilhkf <br/>fiqjmoohjilnfilhkf n V V |") (1 . "/061+ {rn rn {rn llnoqjhhihhhkmomi <br/>folqkhffmklignmlkm nofiqjmoohjilmojn |") (1 . "/061+ {rn rn {rn jooo <br/>folqkhffmkligjfhok nofiqjmoohjilmjmkk |") (-3 ("PipeSolid-AH111-01" (1000 . <br/>"AH111-01") (1000 . "273X5"))))</p>

linhui12 发表于 2009-5-13 21:46:00

本帖最后由 作者 于 2009-5-13 22:22:38 编辑 <br /><br /> <p></p><p>用以上代码可以成功提取出"AH111-01",</p><p>请问:</p><p>1.要如何才能同时提取出"273X5"中的"273",</p><p>2.如何用SSGET实现提取以上信息啊</p><p>向大家讨教了...</p>

jdhszh 发表于 2009-5-14 10:45:00

<p>分析过滤</p>

linhui12 发表于 2009-5-14 10:53:00

<p>楼上兄弟,能否具体介绍一下,怎么“分析过滤”啊???怎么用LSP表达啊。谢谢</p>

linhui12 发表于 2009-5-17 16:19:00

这个功能对我来说很重要,希望大家出手相助,谢谢。

yshf 发表于 2009-5-17 21:33:00

试一试:
(defun c:cx()
(setq xdata (mapcar 'cdr (cdr (cadr (assoc -3 (entget (car (entsel)) (list "PipeSolid-*" "PipeWay-*" )))))))
)

linhui12 发表于 2009-5-17 22:06:00

<p>感谢楼上兄弟,可以用了.</p><p>另外再请教各位,8楼的程序与下面这句我要出现在同一个程序里,也就是说ENTGET和SSGET选择的是同一个实体而我又只想选择一次.要怎么处理啊?</p><p>(SETQ SST (SSGET '((0 . "*POLYLINE")))</p><p>谢谢</p>

yshf 发表于 2009-5-18 09:19:00

<p>entget是获取图元的数据列表,它并不能选择实体,应该是entsel吧。建议使用entsel,直接可以选取你需要的实体,因ssget有可能选择到多于1个的实体,还需经过判断才能确定谁是你需要。</p>
页: [1] 2
查看完整版本: [求助]选取一条POLYLINE后同时获取扩展数据和坐标数据要怎么做?