101
507
11
中流砥柱
本帖以下内容被隐藏保护;需要你回复后,才能看到!
使用道具 举报
请先注册会员后在进行下载
已注册会员,请先登录后下载
29
1152
10
顶梁支柱
;;有是有,只是要先框選到要插入圖塊的圍範,不夠完整 ;;BY 龍龍仔(LUCAS) ;;------------------------------------------------------------- (defun GETINTERPOINTS (ENT2 / E2 PT3 PT4) (setq E2 (entget ENT2)) (setq PT3 (cdr (assoc 10 E2))) (setq PT4 (cdr (assoc 11 E2))) (inters PT1 PT2 PT3 PT4) ) (defun GETALLINTERS (SS / N I J ENT1 POINTS POINT S1 PT1 PT2) (setq N (sslength SS) POINTS '() ) (setq I 0) (repeat N (setq ENT1 (ssname SS I)) (setq PT1 (cdr (assoc 10 (entget ENT1)))) (setq PT2 (cdr (assoc 11 (entget ENT1)))) (setq S1 (ssget "F" (list PT1 PT2))) (setq J 0) (repeat (sslength S1) (if (and (setq POINT (GETINTERPOINTS (ssname S1 J))) (not (member POINT POINTS)) ) (setq POINTS (append POINTS (list POINT))) ) (setq J (1+ J)) ) (setq I (1+ I)) ) POINTS ) (defun C:TTT (/ OS CMD SS PT_LIST) (setq OS (getvar "osmode")) (setq CMD (getvar "cmdecho")) (setq SS (ssget '((0 . "LINE")))) (command "_.undo" "be") (setvar "osmode" 0) (setvar "cmdecho" 0) (setq PT_LIST (GETALLINTERS SS)) (setq PT_LIST (vl-sort PT_LIST (function (lambda (P1 P2) (cond ((vla-object AOBJ1) N2 (1+ N1) ) ;index for inner loop ;;; Inner loop, go through remaining objects (while (vla-object AOBJ2) ;;;Find intersections of Objects IPTS (vla-intersectwith AOBJ1 AOBJ2 0 ) ; variant result IPTS (vlax-variant-value IPTS) ) ;;;Variant array has values? (if (> (vlax-safearray-get-u-bound IPTS 1) 0) (progn ;array holds values, convert it (setq IPTS ;to a list. (vlax-safearray->list IPTS) ) ;;;Loop through list constructing points (while (> (length IPTS) 0) (setq PTS (cons (list (car IPTS) (cadr IPTS) (caddr IPTS) ) PTS ) IPTS (cdddr IPTS) ) ) ) ) (setq N2 (1+ N2)) ) ;inner loop end (setq N1 (1+ N1)) ) ;outer loop end (setvar "OSMODE" HOLDOSMODE) (command "_.UNDO" "_END") PTS ) (defun C:TTT (/ OS CMD SS PT_LIST EN ENT1 EN1 ENT ARE) (setq PT_LIST (INTLINES)) (setq CMD (getvar "cmdecho")) (setvar "cmdecho" 0) (command "_.undo" "be") (setq OS (getvar "osmode")) (setvar "osmode" 0) (setq PT_LIST (vl-sort PT_LIST (function (lambda (P1 P2) (cond ((vla-object EN1))) (cond ((equal ARE (* 1200.0 1200.0) 0.001) (vl-cmdf "_.insert" "1100x1100" ENT1 "" "" "") ) ((equal ARE (* 1200.0 600.0) 0.001) (vl-cmdf "_.insert" "1100x500" ENT1 "" "" "") ) ((equal ARE (* 600.0 600.0) 0.001) (vl-cmdf "_.insert" "500x500" ENT1 "" "" "") ) ) (command "_.erase" EN1 "") ) ) ) (setvar "osmode" OS) (command "_.undo" "e") (setvar "cmdecho" CMD)