明经CAD社区

 找回密码
 注册

QQ登录

只需一步,快速开始

搜索
楼主: 随梦而飞

悬赏缩放LISP源码

  [复制链接]
发表于 2012-8-4 12:25:33 | 显示全部楼层
发表于 2012-8-4 12:44:05 | 显示全部楼层
本帖最后由 xyp1964 于 2012-8-4 14:56 编辑

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

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?注册

x

评分

参与人数 1明经币 +1 收起 理由
随梦而飞 + 1 最好能补一下带钢筋的原位标注

查看全部评分

发表于 2012-8-4 16:18:15 | 显示全部楼层
本帖最后由 x_s_s_1 于 2012-8-4 16:34 编辑

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

  1. (vl-load-com)
  2. ;;;lst_ssn函数(lst_ssn ss)
  3. ;;;ss参数:选折集
  4. ;;;返回图元名表
  5. (defun lst_ssn (ss / n lst)
  6.   (repeat (setq N (sslength ss))
  7.     (setq LST (cons (ssname SS (setq N (1- N))) LST))
  8.   ) ;_ 结束repeat
  9. ) ;_ 结束defun
  10. ;;;计算曲线交点
  11. (defun Curveinters (en1 en2 / pl pts)
  12.   (setq pl (vlax-invoke
  13.       (vlax-ename->vla-object en2)
  14.       'IntersectWith
  15.       (vlax-ename->vla-object en1)
  16.       acExtendNone
  17.     )
  18.   )
  19.   (while pl
  20.     (setq pts (append pts (list (list (car pl) (cadr pl) (caddr pl))))
  21.    pl  (cdr (cdr (cdr pl)))
  22.     )
  23.   )
  24.   pts
  25. )
  26. ;;;更改标注比例因子
  27. (defun ch_dim_bl (en sc)
  28.   (entmod (reverse (cons (list -3
  29.           (list "acad"
  30.          '(1000 . "DSTYLE")
  31.          '(1002 . "{")
  32.          '(1070 . 144)
  33.      ;DIMLFAC变量'设置线性标注测量值的比例因子
  34.          (cons 1040 sc)
  35.          '(1002 . "}")
  36.           ) ;_ 结束list
  37.     ) ;_ 结束list
  38.     (reverse (entget en))
  39.      )
  40.    )
  41.   )
  42. )
  43. (defun zsf (/ old_ly ss_all ss_dot ss_sc ss_pts pt ssets scal n)
  44.   (setvar "cmdecho" 0)
  45.   (setq old_ly (getvar "CLAYER"))
  46.   (setvar "CLAYER" "柱涂实")
  47.   (prompt "\n请选择需要进行缩放的物体:")
  48.   (setq ss_all (ssget))   ;此处可根据个人习惯增加图层(ssget  '((8 . "colu,dim,sbar,dote,axis")))
  49.   (setq ss_dot (ssget "p" (list '(0 . "*line") '(8 . "轴线__点划线"))))
  50.      ;此处图层根据个人习惯改
  51.   (command "._Select" ss_all "remove" ss_dot "")
  52.   (setq ss_sc (ssget "p"))
  53.   (setq ss_pts (lst_ssn ss_dot))
  54.   (setq pt (car (Curveinters (car ss_pts) (cadr ss_pts))))
  55.   (setq ssets (lst_ssn ss_sc))
  56.   (if (setq scal (getreal "\n比例因子<0.25>:"))
  57.     t
  58.     (setq scal 0.25)
  59.   )
  60.   (foreach n (lst_ssn ss_sc)
  61.     (if (or (= (cdr (assoc 8 (entget n))) "柱平法箍筋")
  62.      (= (cdr (assoc 8 (entget n))) "柱平法纵筋")
  63.      (= (cdr (assoc 8 (entget n))) "柱__钢筋标注")
  64. )
  65.       (progn (ssdel n ss_sc) (entdel n))
  66.     )
  67.     (if (= (cdr (assoc 8 (entget n))) "柱截面标注")
  68.       (progn (vla-scaleentity
  69.         (vlax-ename->vla-object n)
  70.         (vlax-3D-point pt)
  71.         scal
  72.       )
  73.       (ch_dim_bl n 1)
  74.       )
  75.       (if (= (cdr (assoc 8 (entget n))) "柱平法截面")
  76. (progn (vla-scaleentity
  77.    (vlax-ename->vla-object n)
  78.    (vlax-3D-point pt)
  79.    scal
  80.         )
  81.         (command "_hatch" "solid" n "")
  82. )
  83.       )
  84.     )
  85.   )
  86.   (setvar "CLAYER" old_ly)
  87. )
  88. (defun c:scc ()
  89.   (zsf)
  90.   (princ)
  91. )



本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?注册

x

点评

确实有点麻烦  发表于 2012-8-4 21:12

评分

参与人数 1明经币 +1 收起 理由
品茗新秀 + 1

查看全部评分

 楼主| 发表于 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))))


点评

在选轴线后出现找不到中心点,楼主能不能搞个演示一下  发表于 2012-9-14 01:53

评分

参与人数 1明经币 +1 收起 理由
随梦而飞 + 1 很给力!

查看全部评分

发表于 2012-9-14 12:13:10 | 显示全部楼层
提示: 作者被禁止或删除 内容自动屏蔽
发表于 2013-4-24 20:29:49 | 显示全部楼层
x_s_s_1 发表于 2012-8-3 18:41
严正声明!!子函数均来自明经,非本人原创,尺寸的比例由于不知道个人习惯没有处理

好用好用,谢谢
发表于 2013-4-27 09:40:34 | 显示全部楼层
新版探索者带这个功能,命令bbl
发表于 2013-5-22 08:36:18 | 显示全部楼层
x_s_s_1 发表于 2012-8-3 18:41
严正声明!!子函数均来自明经,非本人原创,尺寸的比例由于不知道个人习惯没有处理

好像没法用
发表于 2018-8-12 20:45:11 | 显示全部楼层
x_s_s_1 发表于 2012-8-3 18:41
严正声明!!子函数均来自明经,非本人原创,尺寸的比例由于不知道个人习惯没有处理

你好在吗能否 吧比例因子记住 ,输入一次就可以
您需要登录后才可以回帖 登录 | 注册

本版积分规则

小黑屋|手机版|CAD论坛|CAD教程|CAD下载|联系我们|关于明经|明经通道 ( 粤ICP备05003914号 )  
©2000-2023 明经通道 版权所有 本站代码,在未取得本站及作者授权的情况下,不得用于商业用途

GMT+8, 2025-5-19 06:52 , Processed in 0.176753 second(s), 25 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表