tigcat 发表于 2021-11-12 22:33:06

69楼好办法,可以避免分组,直接将圆心组成点表,然后将所有物体以点表中最近点为基点缩放。

tigcat 发表于 2021-11-13 08:16:28

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

tigcat 发表于 2021-11-13 10:53:36

;经过测试图纸,图纸中有的标注是多段线,程序运行不了,其他未严格测试,只有自己改才能满足自己要求
;|
Andyhon
smartstar发表于 2018-8-31 10:45
http://bbs.mjtd.com/thread-178132-1-1.html
202111131034修改,希望抛砖引玉
|;
(defun C:try (/ an1 cmdold ee hh i linelen osold pt pt1 pt10 pt11 pt2 pt3 pt4 ptmax ptmid ptmin sc1 ss ss1 ss2)
(setq cmdold (getvar "CMDECHO"))
(setq osold (getvar "osmode"))
(setvar "CMDECHO" 0)
(setvar "OSMODE" 0)
(setq i -1)
(or(setq sc1 (getreal "\n请输入缩放比例<0.25>:"))
    (setq sc1 0.25)
)
(command "undo" "be")
(setq ss1 (ssget '((0 . "line"))))
(repeat (sslength ss1) (setq ee (entget (ssname ss1 (setq i (1+ i)))))
    (setq pt10 (cdr (assoc 10ee)))
    (setq pt11 (cdr (assoc 11 ee)))
    (setq ptmin (mapcar 'min pt10 pt11))
    (setq ptmax (mapcar 'max pt10 pt11))
    (setq ptmid (mapcar '(lambda(x)(* x 0.5))(mapcar '+ ptmin ptmax)))
    (setq linelen (distance ptmin ptmax))
    (setq an1 (angle ptmin ptmax))
    (setq pt1 (polar ptmid (- an1(* 0.5 pi)) (* 0.4 linelen)))
    (setq pt4 (polar ptmid (+ an1(* 0.5 pi)) (* 0.4 linelen)))
    (setq pt2 (polar pt1an1 (* 0.9 linelen)))
    (setq pt3 (polar pt4an1 (* 0.9 linelen)))
    (setqss2 (ssget "Cp" (list pt1 pt2 pt3 pt4)))
    (setq pt(cdr (assoc 10(entget (ssname (ssget "p" '((0 . "circle")))0)))))
    ;(command "pline" pt1 pt2 pt3 pt4"c");测试选择范围用
    (command "Scale" ss2 "" pt sc1)
)
(command "undo" "e")
(setvar "CMDECHO" cmdold)
(setvar "OSMODE" osold)
(prin1)
)
(prompt "\n****<c:try>****")
(prompt "\n程序为二位前辈创建,仅稍作修改供交流")
(prin1)

lee50310 发表于 2021-11-27 13:26:42

本帖最后由 lee50310 于 2021-11-27 14:01 编辑

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


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







依然小小鸟 发表于 2021-11-27 21:47:24

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

嗯 谢谢大神回复

lee50310 发表于 2021-11-27 22:12:34

本帖最后由 lee50310 于 2021-11-27 22:23 编辑

依然小小鸟 发表于 2021-11-27 21:47
嗯 谢谢大神回复
我說難度頗高,並沒有說不能完成 ,如果要解決還是有辦法的只是比較花時間

依然小小鸟 发表于 2021-11-27 22:22:13

lee50310 发表于 2021-11-27 22:12
我說難度頗高,並沒有說不能完成!

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

lee50310 发表于 2021-11-27 22:28:36

本帖最后由 lee50310 于 2021-11-28 08:20 编辑

依然小小鸟 发表于 2021-11-27 22:22
我构思了一个思路 组合物体-各自成块-原位缩放
有想法,那好太好了!
先試試你想到的辦法吧!
若有興趣,再試試我剛完成的程式

依然小小鸟 发表于 2021-11-28 09:55:37

lee50310 发表于 2021-11-27 22:28
有想法,那好太好了!
先試試你想到的辦法吧!
若有興趣,再試試我剛完成的程式

可惜我不会编程

杨德标 发表于 2021-12-3 12:59:29

这个应该可以解决楼主的问题?
页: 1 2 3 4 5 6 7 [8] 9
查看完整版本: 如何原位缩放????