关于多段线,线中线提取并按照格式输出到文本的问题,请各位大神解答!
;BY:小罗;2013年12月28日
(defun c:tt( / ? biao ent file geshu huidian i j mc name path ss tiaoshu xx xzbiao yy yzbiao)
(setq path (getfiled "保存" "" "txt" 1));;;;;;;;;;;;;;;;;;获取路径
(setq file (open path "w"));----------------------打开文件,没有则新建!
(write-line "[属性描述]" file);-------------------------------------
(write-line "坐标系=80国家大地坐标系" file); ;
(write-line "几度分带=3" file) ;
(write-line "投影类型=高斯克吕格" file) ;
(write-line "计量单位=米" file) ; 写入表头
(write-line "带号=36" file) ;
(write-line "精度=0.001" file) ;
(write-line "转换参数=,,,,,," file) ;
(write-line "[地块坐标]" file) ; ;
(setq ss (ssget '((0 . "LWPOLYLINE"))))?;;;;;;;;;;选择多段线
(setq i 0) ;;;;;;;初始化变量
(setq geshu 0) ;;;为计算界址点名称
(setq tiaoshu 0) ;;;;计算外围多少多少
(repeat (sslength ss);;;;;循环开始,这里是对选择集作循环。
(setq huidian (1+ geshu));计算回点的点号
(setq tiaoshu (1+ tiaoshu))
(write-line (strcat "," ",1," "外围" (itoa tiaoshu) "," "面" "," "H-48-72-(17)" ",综合用地,,@") file) ;;;;计算外围多少多少
(setq name (ssname ss i));得到选择集中图元名称
(setq ent (entget name));得到图元组码表
(setq j 0) ;;;;;;;初始化变量,准备对组码表进行循环,提取组码为10的坐标
(repeat (length ent);循环开始
(setq biao (car (nth j ent)));;;;提取组码
(if (= biao 10) ;;; 进行判断,如果组码为10就执行以下代码
(progn
(setq xx (cadr (nth j ent))) ;;;;;;提取X坐标
(setq yy (caddr (nth j ent)));;;;提取Y坐标
(setq geshu (1+ geshu))
(setq mc (strcat "J" (itoageshu) "," "1" ","));;;;;计算界址点名称
(write-line (strcat mc (rtos yy) "," (rtos xx)) file);;;;;写入文本中
(princ)
)
)
(setq j (1+ j))
);;;;内循环结束
(setq xzbiao (rtos (cadr (assoc 10 ent))))
(setq yzbiao (rtos (caddr (assoc 10 ent))))
(write-line (strcat (strcat "J" (itoahuidian) "," "1" ",") yzbiao "," xzbiao) file);;;回点,返回这条多段线的第一个提取的顶点!
(setq i (1+ i))
);;整个循环结束
(close file);;;;关闭文件,内容才能被正式写入!
)
代码如上,这是小弟自己写的代码,但是实现的功能只能是提取那种最外围的多段线,如果多段线内另有多段线,想按照要求提取里面的多段线,并且按照格式输出,小弟就力有不足了!
小弟的代码实现的功能为:
将这种单一的多段线坐标提取出来,并按照格式输出成如下格式:
文本中,“外围1”、“外围2”代表图中的两条多段线,最前面的J1、J2之类的就是多段线顶点的点号,没什么讲究,按照顺序编的
两个逗号中间的“1”代表的是这两条线为最外面的多段线,现在问题来了,如果出现如下情况:
要将多段线内的多段线也给提取出来,并按照这种格式输出:
文本中两个逗号之间的“2”和“3”代表“外围2”多段线内的多段线,要按照这种格式提取出来,小弟不知道该如何做,还请大神指点,不胜感激!
自己顶一下,大神快来啊! 用"ssget"+"wp"判断一下界址线里面是否还包含界址线,不包含就过去,包含就在提取 蓝图测绘 发表于 2014-1-2 12:08 static/image/common/back.gif
用"ssget"+"wp"判断一下界址线里面是否还包含界址线,不包含就过去,包含就在提取
兄弟,谢谢了,你给的思路不错,已经实现了,不过就是不太完善,就是选择的是时候不能一起选,只能选择最外围的线,让程序来判断里面是否还有线,如果一起选择的话,提取出来就会出错
页:
[1]