本帖最后由 x_s_s_1 于 2012-8-4 08:50 编辑
xiaodao520 发表于 2012-8-4 07:45 
不知道什么原因,在几台电脑上试了,均不成功。x_s_s_1
请注意图层,要选中轴线图层中的图元才行,没时间改版,下面是针对测试图的

- (vl-load-com)
- ;;;lst_ssn函数(lst_ssn ss)
- ;;;ss参数:选折集
- ;;;返回图元名表
- (defun lst_ssn (ss / n lst)
- (repeat (setq N (sslength ss))
- (setq LST (cons (ssname SS (setq N (1- N))) LST))
- ) ;_ 结束repeat
- ) ;_ 结束defun
- ;;;计算曲线交点
- (defun Curveinters (en1 en2 / pl pts)
- (setq pl (vlax-invoke (vlax-ename->vla-object en2) 'IntersectWith (vlax-ename->vla-object en1) acExtendNone))
- (while pl
- (setq pts (append pts (list (list (car pl) (cadr pl) (caddr pl))))
- pl (cdr (cdr (cdr pl)))
- )
- )
- pts
- )
- (defun zsf (/ ss_all ss_dot ss_sc ss_pts pt ssets scal x objss )
- (setvar "cmdecho" 0)
- (prompt "\n请选择需要进行缩放的物体:")
- (setq ss_all (ssget));此处可根据个人习惯增加图层(ssget '((8 . "colu,dim,sbar,dote,axis")))
- (setq ss_dot (ssget "p" '((0 . "*line") (8 . "轴线__点划线"))));此处图层根据个人习惯改
- (command "._Select" ss_all "remove" ss_dot "")
- (setq ss_sc (ssget "p"))
- (setq ss_pts (lst_ssn ss_dot))
- (setq pt (car(Curveinters (car ss_pts) (cadr ss_pts))))
- (setq ssets (lst_ssn ss_sc))
- (if (setq scal (getreal "\n比例因子<0.25>:"))
- t
- (setq scal 0.25))
- (foreach x ssets
- (setq objss (vlax-ename->vla-object x))
- (vla-scaleentity objss (vlax-3D-point pt) scal)
- )
- )
- (defun c:scc ()
- (zsf)
- (princ)
- )
|