QQ登录

只需一步,快速开始

登录 | 注册 | 找回密码

三维网

 找回密码
 注册

QQ登录

只需一步,快速开始

展开

通知     

查看: 9988|回复: 8
收起左侧

[已解决] 求助:CAD中怎么能缩放到合适的尺寸?一直让这个问题伤着了……

[复制链接]
发表于 2011-8-2 09:52:32 | 显示全部楼层 |阅读模式 来自: 中国山东青岛

马上注册,结识高手,享用更多资源,轻松玩转三维网社区。

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

x
本帖最后由 694865935 于 2011-8-2 11:18 编辑
; R& p+ ]+ y9 X  w8 ]; S5 @: {3 P5 L' H" k8 b0 R- p2 j
求助:CAD中怎么能缩放到合适的尺寸?一直让这个问题伤着了……: u" ~4 M) M) j4 M' K
  求助,客户经常给一些PDF档改图(PDF档是用CAD转进去的),我使用PDF转CAD的软件转回CAD来,却发现图纸的尺寸变了,形装都和原来一样没问题,我试着改标注样式,但算不好比例因子,只好放弃。改用缩放命令,但这样又出现一个问题,就是X方向我缩放好了,可以发现Y方向又差了,套上没改以前的图纸,就能发现这个问题。试着用块来解决要放不同比例缩放因子的问题,能做出来但效果不好,主要是比较因子常常不是个整数,只有用比例缩放里的参照方式来收缩,才是最准的,可是比例缩放里的参照好像不能参照XY两个方向了,想在XY方向参照不同的尺寸进行缩放,不知哪位高人有好办法了,先谢谢了!
发表于 2011-8-2 10:17:52 | 显示全部楼层 来自: 中国山东
未命名1.jpg 如图不是可以全图缩放么,不知道你是不是说的这个
 楼主| 发表于 2011-8-2 11:16:09 | 显示全部楼层 来自: 中国山东青岛
谢谢楼上兄弟的回答,我要的不是同时缩放,是X和Y方向能不能都参照不同的尺寸进行缩放
发表于 2011-8-2 12:46:36 | 显示全部楼层 来自: 中国辽宁鞍山
可以考虑X、Y方向拉伸解决。
发表于 2011-8-2 14:01:57 | 显示全部楼层 来自: 中国北京
本帖最后由 @fly@ 于 2011-8-2 14:12 编辑
8 r2 P9 ^- n# n( l2 L! y, B9 g& N) D2 e/ g# e( K# z. `4 a
楼主,你把图形做成块,然后插入块,就可以按照X/Y方向进行缩放了,给你截个图。1 f8 |, l# Y6 J1 {. `+ h) f5 S

9 `) ~3 J7 E, A8 A$ a: X
" S3 B" O; v: o 1.jpg
发表于 2011-8-3 11:27:30 | 显示全部楼层 来自: 中国江苏苏州
X,Y 向,缩放只有用对齐命令了
发表于 2011-8-4 03:25:36 | 显示全部楼层 来自: 中国辽宁
  1. ;;;主程序
    " V2 D& L1 s5 _2 S% G2 [) h
  2. (defun c:SXY (/ mydoc ss sp bn br s), R) j& S: h3 Q+ X
  3. (vl-load-com) ;加载VLISP扩展功能
    0 J7 w& L1 g! z. Z
  4. (setvar "CMDECHO" 0) ;关闭命令回显
    * D9 s! y! S& v% |* V+ \, `
  5. (setq mydoc (vla-get-activedocument (vlax-get-acad-object)))
    ( H, z, `& j1 o' `5 {
  6. ;用vla-get前缀函数获取当前CAD进程的活动文档对象$ ?- Z5 Q8 T; Q. S# Q( C3 c
  7. (setq ss (ssget)) ;创建选择集并由用户在屏幕上选取图元对象$ i, A7 |+ r2 x
  8. (if ss ;检查用户是否有效选择了图元! P: Q2 [! X/ i; g9 }8 f. x
  9. (progn ;当用户有效选择了图元时,执行下面的代码
    : i& S% p5 A5 h7 Q4 {  C% s$ K" u4 C
  10. (setq sp (getpoint "\n指定基点:" ) ;指定缩放(块)基点9 c5 Y' M9 A9 F3 T. B+ P
  11. bn (strcat "temp" (rtos (getvar "cdate" ))) ;临时块名称7 B! i1 V' z3 }- v* z# P3 B
  12. )/ B' _3 @! ?+ H5 F/ i. @' E! m
  13. (command "-block" bn sp ss "" ) ;创建临时块并删除被选择的图元
    & Z. `- a$ ]% v$ v# L; w
  14. (setq br ;在原位置按原尺寸插入临时块参照
    ) @" |) S7 U# M2 Y# k
  15. (vla-insertblock ;用vla-前缀函数调用当前空间的insertblock方法1 ~0 ~* N9 T: N/ [0 c! w
  16. (if (= (vla-get-activespace mydoc) acmodelspace), c5 B. i  o9 t
  17. (vla-get-modelspace mydoc)
    ; [8 C; z0 [' g. r, [8 w1 k
  18. (vla-get-paperspace mydoc)/ C" K8 }& }5 G, C
  19. ) ;获取活动文档的当前空间- d+ C- t9 Z! [# J) C$ e$ E
  20. (vlax-3d-point sp) ;块参照插入点% p, V8 `& Z# K9 ?0 g' {" D/ q
  21. bn ;块名称
    6 R% u/ F8 {5 \% W. Z5 p; G
  22. 1 ;X比例+ Q1 v2 Y6 A1 N- _8 ^1 K3 J
  23. 1 ;Y比例$ {1 C# t4 P& g% b( V
  24. 1 ;Z比例- {8 J: W6 K; R+ e: O
  25. 0 ;旋转角度/ y! g1 c7 @* i1 e2 i3 m6 w& I' J
  26. )4 K4 x8 V/ D, }: V
  27. )0 C. g8 }% z; U4 u) `
  28. (setq s (getscale "X" )) ;调用子程序获取X比例因子
    . h# I. @: S* q4 p$ |
  29. (if s ;检查子程序返回值的有效性
    3 i/ K" p4 k; D; U
  30. (progn ;当返回值有效时继续进行+ R2 p. t5 _. E5 }
  31. (vla-put-xscalefactor br s) ;修改临时块参照的X比例属性
    : V3 _" R& s. J0 q7 `5 X
  32. (setq s (getscale "Y" )) ;调用子程序获取Y比例因子
    # ^2 v0 Z0 o6 T2 B5 o0 m
  33. (if s ;检查子程序返回值的有效性7 s- t7 W8 S: G& P+ W
  34. (vla-put-yscalefactor br s) ;修改临时块参照的Y比例属性+ S0 Z  l" _2 n+ M+ C6 X
  35. )
    4 N( `/ y$ O3 n+ M0 F5 ~3 e0 q
  36. )
    + a( C8 s8 C7 Q  z1 I2 ~
  37. )% U- H2 l, g( k6 L
  38. (vla-explode br) ;分解临时块参照
    2 L& U6 d. G: @/ u* R5 M5 O
  39. (vla-delete br) ;删除临时块参照* [$ {# ^+ Q% i3 x# v
  40. (vla-delete ;删除临时块定义
    % Z/ u( r9 P7 c4 ~4 u( i
  41. (vla-item (vla-get-blocks7 S4 o* u5 c$ w: _3 }( H) l/ e( K
  42. mydoc( j: b% ^& g4 ^6 k: w
  43. )' `; s) R( y$ Z. M  _
  44. bn
    : J5 c6 N( _8 R  a/ W5 y2 g
  45. )
    : O! N, E# N9 A& q" a" \
  46. )4 _( O9 C5 y7 I8 ~  J8 r
  47. ): [5 w$ n) B5 j8 `: Z
  48. )
    ! R* R5 l$ v# g! t9 B2 f
  49. (setvar "CMDECHO" 1) ;打开命令回显% Q( \# e# x# V$ j* o. B  g2 H+ w
  50. (princ) ;静默退出
    3 d) G/ [- |; W
  51. )
    9 y4 |* `3 q0 ^" j" a6 p2 R
  52. ;;;=====================================================================
    : L1 M4 w8 r; F: a/ M
  53. ;;;子程序/ x6 K- U+ r- X, D, f
  54. (defun getscale (s / ut sc l1 l2)7 H! k( B$ N3 F* S: _3 k) j' G
  55. (initget 2 "R" ) ;定义用户输入选项(禁止输入0)和关键字7 a# o/ Y0 T! L" f: a! [
  56. (setq sc ;用户指定距离做为比例因子
    - I! q- Y1 U" E
  57. (vl-catch-all-apply ;捕获用户输入时的错误' G" K1 i0 ]% Q) Z% S- _$ P
  58. 'getdist
    / r  A9 P' R. r/ v# L6 O3 o' B
  59. (list (strcat "\n指定 " s " 比例因子 或[参照(R)] <1.0000>:" )
    2 Q" k2 [" w7 F6 B1 l" o! }
  60. )% K5 O, ^7 W& P* ?% |) [) l! Q
  61. )" k* \" z3 H3 E; b& o1 A
  62. )% U, p  N: w- q* ~2 `
  63. (if (vl-catch-all-error-p sc) ;检查用户输入时是否出错
    / l) c( x5 c* {( Z  K$ B6 ]! n/ E, ~
  64. nil ;当用户输入出错时,子程序返回值为nil* w, O9 C, I; d, K
  65. (if sc ;用户输入正确时,检查是否直接回车
    2 U9 M  n! E2 K9 ^
  66. (if (= sc "R" ) ;检查用户是否输入关键字! c# Y% ?3 j+ B5 u( J" H
  67. (progn ;用户输入的是关键字(选择参照选项)  P; A- h& V7 f: d
  68. (initget 3) ;定义用户输入选项(禁止直接回车或输入0)
    % @  i. o5 L, e' H
  69. (setq l1 ;用户指定参照长度9 h$ E! K1 z& p, j( A0 e( I) A
  70. (vl-catch-all-apply ;捕获用户输入时的错误7 t/ m: Z1 b; A8 M, Z9 _6 w
  71. 'getdist
    , |. \- N* U4 q$ Q3 v. x7 W+ \- B
  72. (list "\n指定参照长度:" )( v: @' C- E: A: M  r
  73. )# m6 o! p2 m# f+ p: ]. U) H
  74. )# {6 ^  T% v. b: @" o7 g9 \
  75. (if (vl-catch-all-error-p l1) ;检查用户输入时是否出错
    5 f' u+ P* G, m8 O
  76. nil ;当用户输入出错时,子程序返回值为nil
    + q) a( k, F% \: f  H  L" u
  77. (progn ;用户输入正确时继续
    1 G! m  H/ T, Z& @: |  z+ l. S
  78. (initget 3) ;定义用户输入选项(禁止直接回车或输入0); r+ k& u: W; B8 ~; v
  79. (setq l2 ;用户指定新长度4 X4 n2 i; c, ]/ |- G/ T) M
  80. (vl-catch-all-apply ;捕获用户输入时的错误
    0 \' [- Y! ?0 `+ `, E' ]
  81. 'getdist
    9 E2 b2 ?- g) D: S
  82. (list "\n指定新长度:" )
    ) I3 j& x5 h7 D, Z8 }
  83. )9 Z( d: t8 M4 X
  84. )/ }6 c+ u# K9 \+ }. W0 {
  85. (if (vl-catch-all-error-p l2) ;检查用户输入时是否出错
    ! K  z! s6 ~- [/ Q. ^/ e- R
  86. nil ;当用户输入出错时,子程序返回值为nil
    ! ?8 w/ N9 Q$ b, X3 s4 u3 J4 Y
  87. (/ l2 l1) ;用户输入正确时计算两个长度的比值做为子程序返回值
    5 A1 P, H" o/ F% z5 s
  88. )5 R' O4 Y  s4 t$ d
  89. )) A: S5 t# T$ G
  90. )6 k) e- t  T1 M+ u9 _1 T& d
  91. )
    ; Z3 ^0 g: E- f. z1 G; c/ i
  92. sc ;用户输入的是长度值,以此做为子程序返回值& k" n/ \& A- _8 w4 F2 x+ A
  93. )
    ! n* f: n: I; |3 Z8 |/ |4 k, Y. b9 I
  94. 1 ;用户直接按回车,用默认的1.0000做为子程序返回值
    1 m0 d. v( L% n  ]; k7 @7 g% n/ n3 \
  95. )! b5 u) n/ t) K9 G9 L4 P1 C4 Q
  96. )
    & b' y) [+ J1 H1 L* k/ E2 [
  97. )
复制代码
发表于 2011-8-4 14:18:23 | 显示全部楼层 来自: 中国广东惠州
7 楼的方法应该不错。
 楼主| 发表于 2011-8-4 14:23:01 | 显示全部楼层 来自: 中国山东青岛
谢谢七楼的版大,我一时还没消化,先看学习以后,再来回贴
发表回复
您需要登录后才可以回帖 登录 | 注册

本版积分规则


Licensed Copyright © 2016-2020 http://www.3dportal.cn/ All Rights Reserved 京 ICP备13008828号

小黑屋|手机版|Archiver|三维网 ( 京ICP备2023026364号-1 )

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