求助,能不能先选择属性块,然后按图号自动排序,然后在定位缩放
求助,能不能先选择属性块,然后按图号自动排序,然后在定位缩放a189233 发表于 2024-1-12 09:33
只能框选,,要是点选的话,可做到其它相同属性块都自动排最好
那点选还分 entsel点选和 ssget 的点选ssget 的点选 又分有空格确认和无空格 需求一次说清最开始就说个 "先选择属性块"花钱了吗 一次次加需求 a189233 发表于 2024-1-11 14:47
谢谢了。谢谢了,可以按顺序了。能不能先选择属性块。
想手动选 ssget 后面的"X"删掉就行了 本帖最后由 飞雪神光 于 2024-1-11 20:41 编辑
(defun c:KK (/ cz dcl_id dcllst dd elsts fn fname jpg_insertxx show_list ss ss-enlst tmnames)
(defun cz (/ e)
(setq e (cadr (nth nn tmnames3)))
(command "zoom" "o" e "")
)
(defun show_list (key newlist)
(start_list key)
(mapcar 'add_list newlist)
(end_list)
)
(defun ss-enlst (ss / enlst)
(cond
((= (type ss) 'PICKSET)
(vl-remove-if-not
'(lambda (x) (= (type x) 'ENAME))
(mapcar 'cadr (ssnamex SS))
)
)
((= (type ss) 'LIST)
(setq enlst (ssadd))
(last (mapcar '(lambda (x) (ssadd x enlst)) ss))
)
)
)
(defun jpg_insertxx (e0 item / obj att jgb aobj)
(vlax-get (setq obj (vlax-ename->vla-object e0))
"HasAttributes"
)
(progn (setq att (vlax-invoke obj "GetAttributes"))
(setq jgb (mapcar '(lambda (aobj)
(list (vlax-get aobj "TagString")
(vlax-get aobj "TextString")
)
)
att
)
)
)
(cadr (assoc item jgb))
)
(defun lm-Str2num (String / positioni YPOutString)
(setq positioni -1 aiilst'() jci 0)
(repeat (strlen string)
(setq ascm(vl-string-elt string (setq positioni (+ positioni 1))))
(if(< 47 ascm 58)
(setq aiilst(append aiilst (list ascm)))
(setq jci (1+ jci))
)
)
(atoi(car(mapcar'VL-LIST->STRING(reverse (list aiilst)))))
)
(setq
ss(ssget (list '(0 . "insert") '(66 . 1) (cons 2 "14315445")))
elsts(ss-enlst ss)
tmnames1 (mapcar '(lambda (x) (list (lm-Str2num (jpg_insertxx x "图号")) (strcat (jpg_insertxx x "图号") (jpg_insertxx x "图名")) x)) elsts)
tmnames2 (vl-sort tmnames1 '(lambda (x y) (< (car x) (car y))))
tmnames3 (mapcar 'cdr tmnames2)
tmnames (mapcar 'car tmnames3)
)
(setq fname (vl-filename-mktemp nil nil ".dcl"))
(setqfn (open fname "w")
dcllst '("xx:dialog {"
" label = \"图框定位by--个人使用)\" ;"
" :list_box {"
" height = 30 ;"
" key = \"dcl-tks\" ;"
" }"
" :button {"
" height = 2 ;"
" is_cancel = true ;"
" key = \"dcl-cancel\" ;"
" label = \"取消\" ;"
" width = 38 ;"
" }}"
)
)
(foreach x dcllst (write-line x fn))
(close fn)
(setq dcl_id (load_dialog fname))
(new_dialog "xx" dcl_id)
(vl-file-delete fname)
(show_list "dcl-tks" tmnames)
(action_tile "dcl-tks" "(setq nn(atoi(get_tile\"dcl-tks\")))(done_dialog 1)")
(setq dd (start_dialog))
(if (= dd 1)
(cz)
)
(unload_dialog dcl_id)
) 飞雪神光 发表于 2024-1-11 14:43
谢谢了。谢谢了,可以按顺序了。能不能先选择属性块。
;先排序
院长,能不能加个“下一张”“上一张”的翻页? 飞雪神光 发表于 2024-1-11 16:44
想手动选 ssget 后面的"X"删掉就行了
谢谢版主了。谢谢了,太厉害了。 xyp1964 发表于 2024-1-11 21:00
;先排序
只能框选,,要是点选的话,可做到其它相同属性块都自动排最好,不过也谢谢院长了,谢谢院长了 飞雪神光 发表于 2024-1-11 16:44
想手动选 ssget 后面的"X"删掉就行了
只能框选,,要是点选的话,可做到其它相同属性块都自动排最好
页:
[1]
2