- 积分
- 706
- 明经币
- 个
- 注册时间
- 2013-3-9
- 在线时间
- 小时
- 威望
-
- 金钱
- 个
- 贡献
-
- 激情
-
|
 - ;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" (itoa geshu) "," "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" (itoa huidian) "," "1" ",") yzbiao "," xzbiao) file);;;回点,返回这条多段线的第一个提取的顶点!
- (setq i (1+ i))
- );;整个循环结束
- (close file);;;;关闭文件,内容才能被正式写入!
- )
代码如上,这是小弟自己写的代码,但是实现的功能只能是提取那种最外围的多段线,如果多段线内另有多段线,想按照要求提取里面的多段线,并且按照格式输出,小弟就力有不足了!
小弟的代码实现的功能为:
将这种单一的多段线坐标提取出来,并按照格式输出成如下格式:
文本中,“外围1”、“外围2”代表图中的两条多段线,最前面的J1、J2之类的就是多段线顶点的点号,没什么讲究,按照顺序编的
两个逗号中间的“1”代表的是这两条线为最外面的多段线,现在问题来了,如果出现如下情况:
要将多段线内的多段线也给提取出来,并按照这种格式输出:
文本中两个逗号之间的“2”和“3”代表“外围2”多段线内的多段线,要按照这种格式提取出来,小弟不知道该如何做,还请大神指点,不胜感激!
|
本帖子中包含更多资源
您需要 登录 才可以下载或查看,没有账号?注册
x
|