明经CAD社区

 找回密码
 注册

QQ登录

只需一步,快速开始

搜索
查看: 14505|回复: 80

[讨论] 如何原位缩放????

[复制链接]
发表于 2018-8-28 22:17 | 显示全部楼层 |阅读模式
2明经币
本帖最后由 依然小小鸟 于 2019-5-8 11:55 编辑

由于经常需要处理地质勘查图,  地勘单位给的钻孔我需要拷到总图上面,但是往往拷过来之后 比例会不匹配  表现在钻孔特别大  我现在想批量把这些钻孔缩放  而且是原位缩放(因为钻孔的位置是死的 )  求大神解决   最好是钻孔的文字编号也能一块和钻孔原位缩放  其中钻孔圆的直径由5  缩放为3 钻孔编号的字高由2变为1.5

附件: 您需要 登录 才可以下载或查看,没有账号?注册
"觉得好,就打赏"
还没有人打赏,支持一下
 楼主| 发表于 2018-8-28 22:27 | 显示全部楼层
http://bbs.mjtd.com/forum.php?mo ... hlight=%CB%F5%B7%C5
G版 之前有一个原位缩放的 程序  但是我用完后 发现不适用我这个   
求大神优化一下代码 让钻孔和钻孔的编号 均以钻孔的中心点  原位缩放

本帖子中包含更多资源

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

x
回复

使用道具 举报

发表于 2018-8-30 17:51 | 显示全部楼层
为什么你的标注都是散的,都搞成一个块,再用g版的程序就行了
回复

使用道具 举报

 楼主| 发表于 2018-8-30 20:58 | 显示全部楼层
start4444 发表于 2018-8-30 17:51
为什么你的标注都是散的,都搞成一个块,再用g版的程序就行了

那样太慢了 每个钻孔做成一个块 有这功夫 我还不如每个钻孔  用SC缩放
回复

使用道具 举报

发表于 2018-8-30 22:57 | 显示全部楼层

(defun C:try ()

   (command "Select"
     (ssget '((0 . "CIRCLE") (-4 . "<") (40 . 1.625)))
     "R"
     (ssget "P" '((0 . "CIRCLE") (-4 . "<") (40 . 1.)))
     ""
   )  
   
   (setq ss (ssget "P")
         HH '(12 6)
          i  -1
   )  
   
   (while (setq ee (ssname ss (setq i (1+ i))))
     (setq pt (dxg 10 ee)
          pt1 (mapcar '- pt HH)
          pt2 (mapcar '+ pt HH)
          ss1 (ssget "W" pt1 pt2)
     )
     (command "Scale" "W" (mapcar '- pt HH) (mapcar '+ pt HH) "" pt 0.25)
   )  

)
回复

使用道具 举报

发表于 2018-8-31 10:12 | 显示全部楼层
依然小小鸟 发表于 2018-8-30 20:58
那样太慢了 每个钻孔做成一个块 有这功夫 我还不如每个钻孔  用SC缩放

如果都是散的真的只能sc一个个来缩放,因为批量处理没法判断哪个单元属于同一个标注
回复

使用道具 举报

发表于 2018-8-31 10:45 | 显示全部楼层
本帖最后由 smartstar 于 2018-8-31 10:48 编辑

根据楼上大师的代码修改了一下,应该是可以了。
  1. (defun C:try ()
  2.    (setq ss     (ssget ';选择半径大于1小于2的圆
  3.           ((-4 . "<and")
  4.             (0 . "circle")
  5.             (-4 . ">")(40 . 1);圆的半径大于1
  6.             (-4 . "<")(40 . 2);圆的半径小于2
  7.            (-4 . "and>")
  8.           )
  9.          )
  10. )  
  11.    (setq  HH '(6 3) ;选择扩大范围
  12.           i  -1
  13.    )  
  14.       (while (setq ee (entget (ssname ss (setq i (1+ i)))))
  15.      (setq pt (cdr (assoc 10  ee))
  16.           pt1 (mapcar '- pt HH)
  17.           pt2 (mapcar '+ pt HH)
  18.           ss1 (ssget "C" pt1 pt2)
  19.      )
  20. ;(command "RECTANG" pt1 pt2 "");测试选择范围用
  21.      (command "Scale" ss1 "" pt 0.25)
  22.    )  
  23. )


回复

使用道具 举报

 楼主| 发表于 2018-8-31 19:38 | 显示全部楼层
smartstar 发表于 2018-8-31 10:45
根据楼上大师的代码修改了一下,应该是可以了。

谢谢你的回复 感觉这个代码局限性还是挺大的 一是 圆的半径只能大于1小于2  二是只能缩放0.25  其实我更想借助这个例子 来实现真正的任何实体 以自己的中心点 可以原位的缩放或者放大  
回复

使用道具 举报

 楼主| 发表于 2018-8-31 19:42 | 显示全部楼层
Andyhon 发表于 2018-8-30 22:57
(defun C:try ()

   (command "Select"

大神 可以增加选项 然自己缩放任意倍数 或者扩大任意倍数 而且圆的半径不用局限
回复

使用道具 举报

发表于 2018-8-31 20:42 | 显示全部楼层
是的  那只是个框架
得随自己的实务应用而加以调整

学些程序吧 至少得会套用修改以符合实务使用
毕竟靠他人忖度完善程序,免不了要跑调滴...
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2024-3-29 17:21 , Processed in 0.242098 second(s), 23 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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