明经CAD社区

 找回密码
 注册

QQ登录

只需一步,快速开始

搜索
查看: 1589|回复: 3

这样变量怎么赋值

[复制链接]
发表于 2004-12-19 14:10:00 | 显示全部楼层 |阅读模式
<?xml:namespace prefix = v ns = "urn:schemas-microsoft-com:vml" /><v:shapetype id=_x0000_t75 coordsize="21600,21600" o:spt="75" o:preferrelative="t" path="m@4@5l@4@11@9@11@9@5xe" filled="f" stroked="f"></v:shapetype>CAD屏幕上用“TEXT”命令输入了如下字符:N行,每行四列



1                                                2                                                        3                                                        4


11                         12                                         13                                         14


21                         22                                                23                                         24


。。。。。。


其中:1、2、3、4的Y坐标相同,1、11、21的X坐标相同,


11、12、13、14的Y坐标相同,2、12、22的X坐标相同,


        21、22、23、24的Y坐标相同,3、13、23的X坐标相同,


4、14、24的X坐标也相同。


。。。。。。


        怎么样才能使用LSP实现 框选(或任意点选所有文字)所有文字后,使得变量


        A1=“1”                         A2=“2”                                 A3=“3”                                 A4=“4”


        B1=“11”                                B2=“12”                                 B3=“13”                                 B4=“14”


        C1=“21”                                C2=“22”                                 C3=“23”                                 C4=“24”


。。。。。。


        想了好久也找不到一个好方法,请大家帮忙!
发表于 2004-12-19 15:10:00 | 显示全部楼层
(defun c:test( / ss i j n entlst varname varlst)
(setq ss (ssget '((0 . "TEXT"))))
(setq i 0)
(repeat (sslength ss)
(setq entlst (append entlst (list (ssname ss i))))
(setq i (1+ i))
)
(setq entlst (vl-sort entlst '(lambda(e1 e2) (<
(cadr (assoc 10 (entget e1)))
(cadr (assoc 10 (entget e2)))
))))
(setq entlst (vl-sort entlst '(lambda(e1 e2) (<
(caddr (assoc 10 (entget e1)))
(caddr (assoc 10 (entget e2)))
))))
(setq i 0 n (length entlst))
(repeat (/ n 4)
(setq j 0)
(repeat 4
(set (read (setq varname (strcat (chr (+ 65 (/ i 4))) (itoa (1+ j))))) (cdr (assoc 1 (entget (nth (+ j i) entlst)))))
(setq varlst (append varlst (list varname)));此步只做显示用,可以不要
(setq j (1+ j))
)
(setq i (+ i 4))
)
;以下为显示
(princ (mapcar '(lambda(e1 e2) (strcat e1 "=" e2)) varlst (mapcar 'eval (mapcar 'read varlst))))
(princ)
)
发表于 2004-12-20 16:57:00 | 显示全部楼层
oH,GOOD!


(setq (read "A1") 1)——错!!!


(set (read "A1") 1)——Verry Good!
发表于 2004-12-20 22:51:00 | 显示全部楼层
1,一定要给那么多变量赋值吗?不能存在一个多维数组格式的表里吗?


2,上面程序中反复使用entget函数,按本程序的目的,在第一个repeat处把坐标和字符串提取出来放在一个表里是不是更好一些?
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2024-9-30 00:27 , Processed in 0.173526 second(s), 25 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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