77077
发表于 2014-6-26 17:49:35
写完成了,可是问题也出来了~急救~~~~;;;=================================================================*
;key1动作反应
(defun key1()
(setq n (atoi (get_tile "key1"));取得当前选中项的索引值n
str (nth n boxlst);从列表框中取出第n个表项:"++D分类四"
str1 (substr str 1 2);分割出前两位
str2 (substr str 3);分割出后面诸位
)
(cond
((= str1 "++") (pro1)(pro3 1));加载对应的中类,并加载数据到textbox
((= str1 "--") (pro1-));删除对应的中类,并加载数据到textbox
((= str1 " +") (pro2)(pro3 2));加载对应的小类,并加载数据到textbox
((= str1 " -") (pro2-));删除对应的小类,并加载数据到textbox
((= str1 "") (pro3 3));加载数据到textbox
)
)
;加载对应的中类
(defun pro1 ( / lstn)
(setq lstn (vl-remove-if '(lambda (x) (/= (strlen (car x)) 2)) lst)
lstn (vl-remove-if '(lambda (x) (/= (substr (car x) 1 1) (substr str2 1 1))) lstn)
lstn (mapcar '(lambda(x) (strcat " +" (car x) (cadr x))) lstn);组成准备插入列表框的表lstn
)
(setq boxlst (LI-DelLst boxlst n)
boxlst (LI-append-lstn boxlst n lstn)
boxlst (LI-append-lstn boxlst n (list (strcat "--" str2)))
)
(fill-list-box "key1" boxlst)
(set_tile "key1" (itoa n))
)
;删除中类
(defun pro1- ( / lstn)
(setq lstn (vl-remove-if '(lambda (x) (/= (strlen (car x)) 2)) lst)
lstn (vl-remove-if '(lambda (x) (/= (substr (car x) 1 1) (substr str2 1 1))) lstn)
)
(repeat (1+ (length lstn))
(setq boxlst (LI-DelLst boxlst n))
)
(setq boxlst (LI-append-lstn boxlst n (list (strcat "++" str2))))
(fill-list-box "key1" boxlst)
(set_tile "key1" (itoa n))
)
;加载对应的小类================
(defun pro2 ( / lstn)
(setq lstn (vl-remove-if '(lambda (x) (/= (strlen (car x)) 3)) lst)
lstn (vl-remove-if '(lambda (x) (/= (substr (car x) 1 2) (substr str2 1 2))) lstn)
lstn (mapcar '(lambda(x) (strcat "" (car x) (cadr x))) lstn);组成准备插入列表框的表lstn
)
(setq boxlst (LI-DelLst boxlst n)
boxlst (LI-append-lstn boxlst n lstn)
boxlst (LI-append-lstn boxlst n (list (strcat " -" str2)))
)
(fill-list-box "key1" boxlst)
(set_tile "key1" (itoa n))
)
;删除小类
(defun pro2- ( / lstn)
(setq lstn (vl-remove-if '(lambda (x) (/= (strlen (car x)) 3)) lst)
lstn (vl-remove-if '(lambda (x) (/= (substr (car x) 1 2) (substr str2 1 2))) lstn)
)
(repeat (1+ (length lstn))
(setq boxlst (LI-DelLst boxlst n))
)
(setq boxlst (LI-append-lstn boxlst n (list (strcat " +" str2))))
(fill-list-box "key1" boxlst)
(set_tile "key1" (itoa n))
)
;读lst取数值填入文本框
(defun pro3 (n / lstx)
(setq lstx (vl-remove-if '(lambda (x) (/= (car x) (substr str2 1 n))) lst))
(set_tile "key2" (nth 0 (car lstx)))
(set_tile "key3" (nth 1 (car lstx)))
)
qyming
发表于 2014-6-28 17:50:26
最后效果怎么样?
77077
发表于 2014-6-29 11:04:53
基本上所有代码都已经贴出来了,整理下就是完整的源码了!
tm20038175
发表于 2014-7-1 12:53:10
有没有说明书?
77077
发表于 2014-7-1 13:04:10
什么说明书?
每个lst项里面包含很多元素("性质代码" "用地性质" "容积率" "建筑密度" "绿地率" "建筑限高" "机动车位比" "自行车位比" "内容说明" "图层名" "图层颜色")
做完以后的界面是
77077
发表于 2014-7-1 13:07:32
最终得到信息表.可以写入图块和文本文件都行~
(("地块编号" "JK-XX-AA-01") ("性质代码" "R11") ("用地性质" "住宅") ("地块面积" "5112.05") ("容积率" "1.1") ("建筑密度" "32") ("绿地率" "35") ("建筑限高" "12")
("地上建筑" "5623.26") ("地下深度" "0") ("地下建筑" "5112.05") ("绿地面积" "1789.22") ("兼容用地" "C") ("兼容比例" "30/70") ("居住人口" "161") ("人口参数" "35")
("机动车位" "84") ("机动车位参数" "1.5") ("自行车位" "17") ("自行车位参数" "0.3") ("配套公建" "公厕-1-80/超市-1-500m2") ("备注信息" "备注"))
qyming
发表于 2014-7-5 12:10:56
把对话框文件也传上来,让我们也学习一下
tianyi1230
发表于 2015-4-25 17:46:05
看来楼主是搞规划设计的!
Rimford
发表于 2015-4-25 19:10:21
这个是真正的技术讨论贴