只需一步,快速开始
可否给出一个完整的程序?假定图上现在有一条线,厚度113002,层dgx,颜色3,类型polyline,不闭合,通过鼠标进行选择,然后与属性表中的相关行进行比较,(假定属性表只有上边给出的前三行,),并返回比较结果,谢谢!
使用道具 举报
将文件中的内容读入到全局变量的列表 ThickNessList 中,然后用assoc 函数就可以了,很简单的,一般有5000个以下的记录,速度也不是太慢,我试过类似的程序 thicknesslist =( (1121000 jmd 6 text no) (121003 jmd 6 polyline yes)(113002 dgx 3 polyline no).........)
(defun txtstrtolist (txtstr) (repeat (strlen txtstr) (setq singlestr (substr txtstr p 1)) (if (/= singlestr " ") (progn (setq str (strcat str singlestr)) (if (= p (strlen txtstr)) (setq datalist (append datalist (list str)) str "" ) ) ) (if (/= str "") (setq datalist (append datalist (list str)) str "" ) ) ) (setq p (1+ p)) ))(defun c:test () (while (not (setq en (car (entsel "请选择一个图元:")) ) ) (princ "\n没有选择到任何图载元,请重新选择:") ) (setq obj (vlax-ename->vla-object en)) (setq thick (rtos (vla-get-thickness obj) 2 0) layer (vla-get-layer obj) color (itoa (vla-get-color obj)) entitype (vla-get-objectname obj) entitype (strcase (substr entitype 5) t) inforlist (list thick layer color entitype) ) (setq fn (open "c:\\data.txt" "r") flag t ) (while (and (setq txt_str (read-line fn) ) flag ) (setq p 1 str "" datalist '() ) (txtstrtolist txt_str) (setq data_list (reverse (cdr (reverse datalist)))) (if (and (vl-every '= inforlist data_list) data_list) (setq flag nil) ) ) (close fn) (if (not flag) (progn (setq datastr "" n 0 ) (repeat (length datalist) (setq datastr (strcat datastr (nth n datalist) " ") n (1+ n) ) ) (setq datastr (strcat "在文件中找到与之对应的信息!" "\n它的信息为:" datastr ) ) (alert datastr) ) (alert "在文件中没有找到与之对应的信息!") ))
本版积分规则 发表回复 回帖后跳转到最后一页
小黑屋|手机版|CAD论坛|CAD教程|CAD下载|联系我们|关于明经|明经通道 ( 粤ICP备05003914号 ) ©2000-2023 明经通道 版权所有 本站代码,在未取得本站及作者授权的情况下,不得用于商业用途
GMT+8, 2025-6-21 04:06 , Processed in 0.118763 second(s), 19 queries , Gzip On.
Powered by Discuz! X3.4
Copyright © 2001-2021, Tencent Cloud.