明经CAD社区

 找回密码
 注册

QQ登录

只需一步,快速开始

搜索
查看: 1583|回复: 3

小弟遇到了两个麻烦,望大虾指教

[复制链接]
发表于 2005-1-5 18:40:00 | 显示全部楼层 |阅读模式
各位大虾,小弟日前用LISP写程序时遇到了点麻烦,但不知错在哪里,所以望大虾能不吝指教。小弟的程序主要是读取线的外部属性数据,然后根据读取的数据形成参数文件,再根据这个参数文件形成需要的图形。但小弟在写程序过程中却遇到了下面的问题:1.在读取外部属性数据时(小弟用的是画条线然后选中与画的线相交的实体),一遇到块或多线就死了,但后来过滤掉,还是不行,我不知道是什么问题,但把这些个东西全部Explode开后就不会出现。不知是什么原因?2.在绘图时,小弟用Entmake进行,但是在插入块时就遇到了问题,小弟的程序行是这样的:(entmake(list(cons 0 "insert")(cons 2 "xxx")(cons 10 basepoint))).但就是插不进去,但如果事先在图形中插入一次后,以后就都能行了,不知道是什么原因,希望大虾指教。小弟是刚开始用Lisp写程序,所以有些地方可能说得不对,还请指正!
发表于 2005-1-5 20:05:00 | 显示全部楼层
1,不是很明白你的问题,要看看你的程序才可能发现问题


2。可能你的图中没有"xxx"这个块,插入一次后(外部块),就会在图中生成一个"xxx"块,这样才可以使用entmake建立INSERT对象
发表于 2005-1-7 09:00:00 | 显示全部楼层
带上块的全部路径试试。
 楼主| 发表于 2005-1-8 11:39:00 | 显示全部楼层
(defun c:getdata(/)
(setq pt1(getpoint"\n请输入管线断面的起始点坐标:"))
(setq pt2(getpoint pt1"\n请输入管线断面的终点坐标:"))
(setq datafile(getfiled "断面数据保存在" "" "txt" 1))
(setq fdata(open datafile "a"))
(setq dist 0.0)
(setq depth 0.0)
(setq n_zero 0)
(setq kind "")
(setq code "")
(setq s_pt (list 0.0 0.0))
(setq e_pt (list 0.0 0.0))
(setq int_pt(list 0.0 0.0))
(setq max_depth 0.0)
(setq max_dist 0.0)
(setq h_road(getstring"\n请输入路牙高度:"))
(setq ss(ssget "C" pt1 pt2))
(setq i 0)
(setq n(sslength ss))
(while (< i (- n 1))
(setq ent1(ssname ss i))
(setq i(+ i 1))
(setq ent11(entget ent1))
(setq name(cdr( assoc 0 ent11)))
(setq name(strcase name T))
(if (/= name "line")
(ssdel ent1 ss)
)
)
(setq n(sslength ss))
(setq i 0)
(repeat n
(setq ent(ssname ss i))
(setq i(+ i 1))
(setq ent(entget ent '("*")))
(setq s_pt(cdr(assoc 10 ent)))
(setq x(nth 0 s_pt))
(setq y(nth 1 s_pt))
(setq s_pt(list x y 0))
(setq e_pt(cdr(assoc 11 ent)))
(setq x(nth 0 e_pt))
(setq y(nth 1 e_pt))
(setq e_pt(list x y 0))
(setq int_pt(inters pt1 pt2 s_pt e_pt))
(setq dist(distance pt1 int_pt))
(setq kind(strcase(cdr(assoc 8 ent))T))
(if (or(= kind "water")(= kind "gas")(= kind "swy")(= kind "sww")(= kind "spy")(= kind "spq")(= kind "pwg")(= kind "pwl")(= kind "pwc")(= kind "pwd")(= kind "pwz")(= kind "pwh")(= kind "tlg")(= kind "tll"))
(progn
(setq data(cdr (assoc -3 ent)))
(if (or(= kind "water")(= kind "gas")(= kind "swy")(= kind "sww")(= kind "spy")(= kind "spq"))
(progn
(setq code(cdr(assoc 1000(cdr(assoc "E_HEIGHT" data)))))
(if (= code nil)
(progn
(setq code "管径or孔数or根数未输入")
)
)
(setq depth(cdr(assoc 1000(cdr(assoc "E_NOTE" data)))))
(if (= depth nil)
(progn
(setq depth "0")
(setq n_zero(+ 1 n_zero))
)
)
(setq max_dist(max max_dist dist))
(setq depth1 (atof depth))
(setq max_depth(min max_depth depth1))
(setq dist(rtos dist 2 2))
(setq string(strcat dist "," depth "," kind "," code))
(write-line string fdata)
)
)
(if (or(= kind "pwg")(= kind "pwl")(= kind "pwc")(= kind "pwd")(= kind "pwz")(= kind "pwh")(= kind "tlg")(= kind "tll"))
(progn
(setq code(cdr(assoc 1000(cdr(assoc "E_NUMBER" data)))))
(if (= code nil)
(progn
(setq code "管径or孔数or根数未输入")
)
)
(setq depth(cdr(assoc 1000(cdr(assoc "E_NOTE" data)))))
(if (= depth nil)
(progn
(setq depth "0")
(setq n_zero(+ 1 n_zero))
)
)
(setq max_dist(max max_dist dist))
(setq depth1 (atof depth))
(setq max_depth(min max_depth depth1))
(setq dist(rtos dist 2 2))
(setq string(strcat dist "," depth "," kind "," code))
(write-line string fdata)
)
)
)
(progn
(if (= kind "road")
(progn
(setq code "0")
(setq depth h_road)
(setq max_dist(max max_dist dist))
(setq depth1 (atof depth))
(setq max_depth(min max_depth depth1))
(setq dist(rtos dist 2 2))
(setq string(strcat dist "," depth "," kind "," code))
(write-line string fdata)
)
)
)
)
)
(princ"\n本次选择共有")(princ n_zero)(princ"条管线的埋深未输入!")
(command "line" pt1 pt2 "")
(setq max_dist(distance pt1 pt2))
(setq max_dist(rtos max_dist 2 2))
(setq max_depth(rtos (* -1 max_depth) 2 2))
(setq endline(strcat max_dist "," max_depth))
(write-line endline fdata)
(close fdata)
(princ"\n")
(princ"OVER!")
) ;;注:这是其中的那个取外部数据的程序,请您帮忙看看,哪有问题.
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2024-9-29 22:25 , Processed in 0.147765 second(s), 25 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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