SSGET "pt" 需要一个或两个点
本帖最后由 852456 于 2018-10-7 00:01 编辑本人是论坛新人最近自己研究了根据图框来建立文件夹并输出宗地图 但是不知道为啥有的能生成 有的生成不了 大神们帮忙看看。因为涉及到权属线所以不能上传附近。
以下是代码
(DEFUN C:1()
(vl-load-com)
;;;(xlr-get-ptn对象)获取奇点坐标列表
(defun xlr-get-ptn (enmae / new_ls l2 l1)
;;;(setq enmae (car (entsel )))
(setq l1 (entget enmae))
(setq new_ls nil)
(foreach l2 l1
(if (= 10 (car l2))
(setq new_ls (cons (cdr l2) new_ls))
)
)
(reverse new_ls)
)
(setq ss (ssget (list (cons 8 "111"))))
;;;(setq ss nil)
(setqAcadObject (vlax-get-acad-object)
AcadDocument (vla-get-ActiveDocument Acadobject)
mSpace (vla-get-ModelSpace Acaddocument))
(setq docPath (vla-get-Path AcadDocument))
(repeat (setq k (sslength ss))
(setq ent (ssname ss (setq k (1- k))))
(setq pl1 (xlr-get-ptn ent))
(setq ss1 (ssget "WP" pl1 ));选择图框内的图元
(setq ss2 (ssget "WP" pl1 (list (cons 0 "POLYLINE"))));选择图框内的宗地权属线
(setq en1 (ssname ss2 0))
(setq ent1 (entget en1 (list "*")))
(if (not (setq ent1_ls (assoc "south" (cdr (assoc -3 ent1)))))
(setq ent1_ls (assoc "SOUTH" (cdr (assoc -3 ent1))))
)
(SETQ Zd (cdr (caddr ent1_ls)))
(setq qlr (cdr (cadddr ent1_ls)))
(vl-mkdir
(setq ffn (strcat
docPath
"\\"
"220283"
zd
"_"
qlr
)
)
);创建文件夹
;;;(sslength ss2 )
(setq
pn (strcat docPath
"\\" "220283"
zd "_"
qlr "\\"
"220283" zd
"_宗地图"
)
);创建宗地图名称
(xlrx-doc-wblock ss1 pn);输出宗地图 这里用的是G版的函数
))
本帖最后由 llsheng_73 于 2018-10-7 00:39 编辑
仔细看下只有文件夹而无图形的地方,也许它只是图框内的一条碎线,宗地线本身肯定是封闭的,但是制作成宗地图后,邻宗被打断是很正常的,根据你的ssget的过滤条件和固定取选择集第一条线作为要处理的宗地线,极为可能导致有的线它可能只有2个点,无法构成选择范围,另外就算能构成选择范围输出了图形,也不一定是正确的。
多检查几处有宗地碎线的地方,如果和前边的猜想差不多,那么得重新考虑ssget的过滤条件及处理方式
宗地图一般是直接在总图上导出,弄成这样了导出来也没多大用处(打印除外),因为它的坐标是完全不正确的
llsheng_73 发表于 2018-10-7 00:38
仔细看下只有文件夹而无图形的地方,也许它只是图框内的一条碎线,宗地线本身肯定是封闭的,但是制作成宗地 ...
请问,如果我的宗地图太多了。弄的图形很小。范围却很大,会造成ssget根据点集选择不上对象呢?就是图中的错误
页:
[1]