lengliqun 发表于 2011-5-22 00:30:29

申请选择封闭的PL线或圆,则与这些封闭的PL线或圆相交的其它line、arc被修改到“临时

本帖最后由 lengliqun 于 2011-5-22 14:15 编辑

选择封闭的PL线或圆,则与这些封闭的PL线或圆相交的其它line、arc被修改到“临时图层5”,测试文件以5楼为准。

Andyhon 发表于 2011-5-22 00:30:30


(defun ss2lst (sel / n l)
   (repeat (setq n (sslength sel))
   (setq n (1- n)
         l (cons (ssname sel n) l)
   ) )
)

;;; for test only
;;; Must existed lyr

(defun c:test (/ ss ptss ss5 lyr)
   (cond
    ((null (setq ss (ssget '(( 0 . "CIRCLE,LwPolyLine"))))))
    (T
   (setq ptss (mapcar 'acet-ent-geomextents (ss2lst ss))
            ss5 (ssadd)
         ;; lyr "Temp5"
            lyr "临时图层5"      ; user 自定 lyr 名稱
   )

   (foreach pts ptss
       (mapcar
         (function
         (lambda (x) (ssadd x ss5))
         )
         (ss2lst (ssget "c" (car pts) (cadr pts) '((0 . "ARC,LINE"))))
       )
   )
   ;; (command "chprop" ss5 "" "La" "Temp5" "")
   (command "chprop" ss5 "" "La" lyr "")
   ))
   (princ)
)

ZZXXQQ 发表于 2011-5-22 11:38:55

试下看

;与圆或封闭的复线相交的直线或弧放到“临时图层5”中 明经 ZZXXQQ 2011.5.22
(defun c:tt ()
(setvar "CMDECHO" 0)
(setq olayer (getvar "CLAYER"))
(if (setq ss (ssget '((0 . "CIRCLE,LWPOLYLINE")))) (progn
(if (not (tblsearch "LAYER" "临时图层5"))
   (command ".LAYER" "M" "临时图层5" "")
)
(setq i 0)
(repeat (sslength ss)
   (setq ent (entget(ssname ss i)))
   (cond
    ((= (cdr(assoc 0 ent)) "CIRCLE")
   (setq pc (cdr(assoc 10 ent0))
         r (cdr(assoc 40 ent))
         j -1 plst (list))
   (repeat 360
      (setq plst (cons (polar pc (/ (* (setq j (1+ j)) pi) 180) r) plst))
   )
   (if (setq ss1 (ssget "F" plst '((0 . "ARC,LINE"))))
      (command ".CHPROP" ss1 "" "LA" "临时图层5" "")
   )
    )
    ((and (= (cdr(assoc 0 ent)) "LWPOLYLINE")
          (> (rem (cdr(assoc 70 ent)) 2) 0))
   (setq plst (list))
   (foreach x ent (if (= (car x) 10) (setq plst (cons (cdr x) plst))))
   (if (setq ss1 (ssget "F" plst '((0 . "ARC,LINE"))))
      (command ".CHPROP" ss1 "" "LA" "临时图层5" "")
   )
    )
   )
   (setq i (1+ i))
)
))
(setvar "CLAYER" olayer)
(setvar "CMDECHO" 1)
(princ)
)

lengliqun 发表于 2011-5-22 13:02:03

本帖最后由 lengliqun 于 2011-5-22 14:15 编辑

感谢ZZXXQQ的出手相助,程序cad2004下可执行,但对与圆相交的线无效,对与封闭PL相交的线个别有一个方向无效。测试文件以5楼为准。

Andyhon 发表于 2011-5-22 13:54:56

依楼主您的第二个 测试.dwg
分上下而言
上图 外框上下 各是完整的弧段

下图 外框下 是完整的弧段

下图 外框上 则是由相连7弧段 + 一零长度的弧段!?

lengliqun 发表于 2011-5-22 14:12:38

多谢4楼兄弟,上面的测试图由于本人粗心产生笔误,自我批评一下,上传新的测试图。

lengliqun 发表于 2011-5-22 15:35:44


6楼程序CAD2004测试可用,感谢Andyhon,感谢ZZXXQQ。

二哥 发表于 2013-1-1 00:43:11

谢谢分享啊!
页: [1]
查看完整版本: 申请选择封闭的PL线或圆,则与这些封闭的PL线或圆相交的其它line、arc被修改到“临时