c735023723 发表于 2012-8-4 12:25:33

xyp1964 发表于 2012-8-4 12:44:05

本帖最后由 xyp1964 于 2012-8-4 14:56 编辑

此功能基本木有用
柱子缩小-尺寸不变

x_s_s_1 发表于 2012-8-4 16:18:15

本帖最后由 x_s_s_1 于 2012-8-4 16:34 编辑

(仅针对楼主测试图)修改了一下,标注的位置有思路,但是实现起来比较麻烦(对我来讲),有空了再搞吧。

(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 ch_dim_bl (en sc)
(entmod (reverse (cons (list -3
          (list "acad"
         '(1000 . "DSTYLE")
         '(1002 . "{")
         '(1070 . 144)
   ;DIMLFAC变量'设置线性标注测量值的比例因子
         (cons 1040 sc)
         '(1002 . "}")
          ) ;_ 结束list
    ) ;_ 结束list
    (reverse (entget en))
   )
   )
)
)
(defun zsf (/ old_ly ss_all ss_dot ss_sc ss_pts pt ssets scal n)
(setvar "cmdecho" 0)
(setq old_ly (getvar "CLAYER"))
(setvar "CLAYER" "柱涂实")
(prompt "\n请选择需要进行缩放的物体:")
(setq ss_all (ssget))   ;此处可根据个人习惯增加图层(ssget'((8 . "colu,dim,sbar,dote,axis")))
(setq ss_dot (ssget "p" (list '(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 n (lst_ssn ss_sc)
    (if (or (= (cdr (assoc 8 (entget n))) "柱平法箍筋")
   (= (cdr (assoc 8 (entget n))) "柱平法纵筋")
   (= (cdr (assoc 8 (entget n))) "柱__钢筋标注")
)
      (progn (ssdel n ss_sc) (entdel n))
    )
    (if (= (cdr (assoc 8 (entget n))) "柱截面标注")
      (progn (vla-scaleentity
      (vlax-ename->vla-object n)
      (vlax-3D-point pt)
      scal
      )
      (ch_dim_bl n 1)
      )
      (if (= (cdr (assoc 8 (entget n))) "柱平法截面")
(progn (vla-scaleentity
   (vlax-ename->vla-object n)
   (vlax-3D-point pt)
   scal
      )
      (command "_hatch" "solid" n "")
)
      )
    )
)
(setvar "CLAYER" old_ly)
)
(defun c:scc ()
(zsf)
(princ)
)



随梦而飞 发表于 2012-8-6 21:15:00

本帖最后由 随梦而飞 于 2012-8-6 21:15 编辑

顶上去待高手再完善一下,注高手完善后设50明经币,让我下载

水沙漠 发表于 2012-9-14 00:16:18

本帖最后由 水沙漠 于 2012-9-14 00:23 编辑

TO: 19楼

(prompt "\n请选择需要进行缩放的物体:")
(setq ss_all (ssget))   ;此处可根据个人习惯增加图层(ssget'((8 . "colu,dim,sbar,dote,axis")))
(setq ss_dot (ssget "p" (list '(0 . "*line") '(8 . "轴线__点划线"))));此处图层根据个人习惯改

    将上述代码做类似如下修改,可增加图层的通用性

(setq ent_axis (entget (car (entsel " \n 请选择轴线图层:"))))
(setq layername_axis (cdr (assoc 8 ent_axis)))
......
(setq ent_colu (entget (car (entsel " \n 请选择柱标注图层:"))))
(setq layername_colu (cdr (assoc 8 ent_colu)))

(prompt "\n请选择需要进行缩放的物体:")

(setq ss_all (ssget(list'(-4 . "<or")
                                     '(-4 . "<and") '(0 . "line,text") (cons 8 layername_axis) '(-4 . "and>")
                                     ......
                                     '(-4 . "<and") '(0 . "line,text") (cons 8 layername_colu) '(-4 . "and>")
                                     '(-4 . "or>")
                              )
                   )
)
(setq ss_dot (ssget "p" (list '(0 . "*line") (cons 8 layername_axis))))
......
(setq ss_colu (ssget "p" (list '(0 . "*text") (cons 8 layername_colu))))


500w008 发表于 2012-9-14 12:13:10

jxjaxa 发表于 2013-4-24 20:29:49

x_s_s_1 发表于 2012-8-3 18:41 static/image/common/back.gif
严正声明!!子函数均来自明经,非本人原创,尺寸的比例由于不知道个人习惯没有处理

好用好用,谢谢

springwillow 发表于 2013-4-27 09:40:34

新版探索者带这个功能,命令bbl

无惢 发表于 2013-5-22 08:36:18

x_s_s_1 发表于 2012-8-3 18:41 static/image/common/back.gif
严正声明!!子函数均来自明经,非本人原创,尺寸的比例由于不知道个人习惯没有处理

好像没法用

664571221 发表于 2018-8-12 20:45:11

x_s_s_1 发表于 2012-8-3 18:41
严正声明!!子函数均来自明经,非本人原创,尺寸的比例由于不知道个人习惯没有处理

你好在吗能否 吧比例因子记住 ,输入一次就可以
页: 1 2 [3] 4
查看完整版本: 悬赏缩放LISP源码