明经CAD社区

 找回密码
 注册

QQ登录

只需一步,快速开始

搜索
楼主: 依然小小鸟

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

[复制链接]
发表于 2021-11-12 22:33 来自手机 | 显示全部楼层
69楼好办法,可以避免分组,直接将圆心组成点表,然后将所有物体以点表中最近点为基点缩放。
回复

使用道具 举报

发表于 2021-11-13 08:16 | 显示全部楼层
昨天看帖没看仔细,5#和7#的两位前辈已经完美解决了该问题,圆的半径和缩放倍数只是一个简单的参数传递.论坛当年这么多热心大神帮助解答.真是幸福!楼主若是有需要,可以把这是需要的图纸发个样板,可以帮助修改,其实您要是会基础的lisp,可以自己改的.大框架前辈写好了哦.
回复

使用道具 举报

发表于 2021-11-13 10:53 | 显示全部楼层
;经过测试图纸,图纸中有的标注是多段线,程序运行不了,其他未严格测试,只有自己改才能满足自己要求
  1. ;|
  2. Andyhon
  3. smartstar发表于 2018-8-31 10:45
  4. http://bbs.mjtd.com/thread-178132-1-1.html
  5. 202111131034修改,希望抛砖引玉
  6. |;
  7. (defun C:try (/ an1 cmdold ee hh i linelen osold pt pt1 pt10 pt11 pt2 pt3 pt4 ptmax ptmid ptmin sc1 ss ss1 ss2)
  8.   (setq cmdold (getvar "CMDECHO"))
  9.   (setq osold (getvar "osmode"))
  10.   (setvar "CMDECHO" 0)
  11.   (setvar "OSMODE" 0)
  12.   (setq i -1)
  13.   (or(setq sc1 (getreal "\n请输入缩放比例<0.25>:"))
  14.     (setq sc1 0.25)
  15.   )
  16.   (command "undo" "be")
  17.   (setq ss1 (ssget '((0 . "line"))))  
  18.   (repeat (sslength ss1) (setq ee (entget (ssname ss1 (setq i (1+ i)))))
  19.     (setq pt10 (cdr (assoc 10  ee)))
  20.     (setq pt11 (cdr (assoc 11 ee)))
  21.     (setq ptmin (mapcar 'min pt10 pt11))
  22.     (setq ptmax (mapcar 'max pt10 pt11))
  23.     (setq ptmid (mapcar '(lambda(x)(* x 0.5))(mapcar '+ ptmin ptmax)))
  24.     (setq linelen (distance ptmin ptmax))
  25.     (setq an1 (angle ptmin ptmax))
  26.     (setq pt1 (polar ptmid (- an1(* 0.5 pi)) (* 0.4 linelen)))
  27.     (setq pt4 (polar ptmid (+ an1(* 0.5 pi)) (* 0.4 linelen)))
  28.     (setq pt2 (polar pt1  an1 (* 0.9 linelen)))
  29.     (setq pt3 (polar pt4  an1 (* 0.9 linelen)))
  30.     (setq  ss2 (ssget "Cp" (list pt1 pt2 pt3 pt4)))
  31.     (setq pt  (cdr (assoc 10(entget (ssname (ssget "p" '((0 . "circle")))0)))))
  32.     ;(command "pline" pt1 pt2 pt3 pt4"c");测试选择范围用
  33.     (command "Scale" ss2 "" pt sc1)
  34.   )
  35.   (command "undo" "e")
  36.   (setvar "CMDECHO" cmdold)
  37.   (setvar "OSMODE" osold)
  38.   (prin1)  
  39. )
  40. (prompt "\n****<c:try>****")
  41. (prompt "\n程序为二位前辈创建,仅稍作修改供交流")
  42. (prin1)
  43.   

回复

使用道具 举报

发表于 2021-11-27 13:26 | 显示全部楼层
本帖最后由 lee50310 于 2021-11-27 14:01 编辑

你這個圖難度頗高
如果要做 原位縮放而物體鑽孔不跑偏 那就必需  逆工程回去  把每個鑽孔組 都變成 block 而插入點是 鑽孔圓心
             依孔心做縮放 , (不能以整體的中心點做原位縮放, 這樣鑽孔圓心會跑偏)


首先 先做分析 :  圖上的鑽孔組 (包含圓,同心圓,圓內有x線 , 一條線, 及線上下 2個文字)  但元體都是分離的 共有30組
                        1.找出特徵 並排除一些不必要的 (如 物體有 重疊,大小不一,線型不一...)
                        2. 再依特徵 過濾搜尋圖檔 找到組合物串列
                        3. 依組合物範圍框選物體 轉 block (插入點為鑽孔圓心)
                        4. 最後再縮放 每個 (block)鑽孔組  即可







回复

使用道具 举报

 楼主| 发表于 2021-11-27 21:47 | 显示全部楼层
lee50310 发表于 2021-11-27 13:26
你這個圖難度頗高
如果要做 原位縮放而物體鑽孔不跑偏 那就必需  逆工程回去  把每個鑽孔組 都變成 block ...

嗯 谢谢大神回复
回复

使用道具 举报

发表于 2021-11-27 22:12 | 显示全部楼层
本帖最后由 lee50310 于 2021-11-27 22:23 编辑

我說難度頗高,並沒有說不能完成 ,如果要解決還是有辦法的只是比較花時間
回复

使用道具 举报

 楼主| 发表于 2021-11-27 22:22 | 显示全部楼层
lee50310 发表于 2021-11-27 22:12
我說難度頗高,並沒有說不能完成!

  我构思了一个思路 组合物体-各自成块-原位缩放
回复

使用道具 举报

发表于 2021-11-27 22:28 | 显示全部楼层
本帖最后由 lee50310 于 2021-11-28 08:20 编辑
依然小小鸟 发表于 2021-11-27 22:22
我构思了一个思路 组合物体-各自成块-原位缩放

有想法,那好太好了!
先試試你想到的辦法吧!
若有興趣,再試試我剛完成的程式

回复

使用道具 举报

 楼主| 发表于 2021-11-28 09:55 | 显示全部楼层
lee50310 发表于 2021-11-27 22:28
有想法,那好太好了!
先試試你想到的辦法吧!
若有興趣,再試試我剛完成的程式

可惜我不会编程
回复

使用道具 举报

发表于 2021-12-3 12:59 | 显示全部楼层
这个应该可以解决楼主的问题?

本帖子中包含更多资源

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

x
回复

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-4-28 11:12 , Processed in 0.469308 second(s), 18 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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