本帖最后由 qcw911 于 2011-10-19 09:00 编辑
ljttjl 发表于 2011-10-18 22:23 
查看autocad命令帮助文件
这个是我找到的程序
但是结合VBA就不行了
命令行过程是这样的 vbastmt (setvar “filetrad” 200) Ckcase 用户选择线段
我编写 是 (command “vbastmt”) (setvar “filetrad” 200) (command “ckcase” pasue) 这样行吗? 插写在那里  - (vl-load-com)
- (defun gotonexten (en pt / box en2 en2lst ep i sp ss)
- (setq box (* (/ (getvar "pickbox") (cadr (getvar "screensize")))
- (getvar "viewsize")
- )
- )
- (setq ss (ssget "c"
- (mapcar '- pt (list box box))
- (mapcar '+ pt (list box box))
- )
- )
- (if ss
- (progn
- (ssdel en ss)
- (setq i 0)
- (while (setq en2 (ssname ss i))
- (setq i (1+ i))
- (setq
- sp (vl-catch-all-apply 'vlax-curve-getStartPoint (list en2))
- )
- (if (listp sp)
- (progn (setq ep (vlax-curve-getEndPoint en2))
- (cond ((equal sp pt 1e-8)
- (setq en2lst (cons (list en2 ep) en2lst))
- )
- ((equal ep pt 1e-8)
- (setq en2lst (cons (list en2 sp) en2lst))
- )
- )
- )
- )
- )
- )
- )
- en2lst
- )
- ;楢銛楢慄c:ss-----fsxm 2007/01/29
- (defun c:ss (/ en enp ept spt ss addnext)
- (if (and (setq enp (entsel))
- (ssget (cadr enp) '((0 . "*line,arc,circle,ellipse")))
- )
- (progn
- (setq en (car enp))
- (setq spt (vlax-curve-getStartPoint en))
- (setq ept (vlax-curve-getendPoint en))
- (setq ss (ssadd))
- (ssadd en ss)
- (defun addnext (en pt / next)
- (if (setq next (gotonexten en pt))
- (foreach a next
- (if (not (ssmemb (car a) ss))
- (progn (ssadd (car a) ss)
- (apply 'addnext a)
- )
- )
- )
- )
- )
- (addnext en spt)
- (addnext en ept)
- (if (= 0 (getvar "cmdactive"))
- (sssetfirst nil ss)
- )
- ss
- (jion)
- )
- (progn
- (princ "\n枹?庢?徾埥?庢椆旕curve?宆?徾!")
- (princ)
- )
- )
- )
- (defun jion (/ ss s)
- (setq ss (ssget '((-4 . "<OR")
- (0 . "LINE")
- (0 . "ARC")
- (-4 . "<AND")
- (0 . "LWPOLYLINE")
- (70 . 0)
- (-4 . "AND>")
- (-4 . "OR>")
- )
- )
- )
- (while ss
- (setq s (ssname ss 0))
- (if (or (= "LINE" (cdr (assoc 0 (entget s))))
- (= "ARC" (cdr (assoc 0 (entget s))))
- )
- (command "pedit" s "y" "j" "p" "" "x")
- (command "pedit" s "j" "p" "" "x")
- )
- (setq ss (ssget "p"))
- )
- (princ)
- )
|