QQ登录

只需一步,快速开始

登录 | 注册 | 找回密码

三维网

 找回密码
 注册

QQ登录

只需一步,快速开始

展开

通知     

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

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

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

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

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

x
本帖最后由 694865935 于 2011-8-2 11:18 编辑
# R; w- D- q4 P. O# {$ l$ o6 O: K$ h5 F( f
求助:CAD中怎么能缩放到合适的尺寸?一直让这个问题伤着了……6 I& C5 V0 J4 |  P7 V, Q: X. `: m
  求助,客户经常给一些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 编辑
0 Z& k* l1 J, R0 R
9 q- [% J% c6 T2 r9 h2 {7 J2 A* I楼主,你把图形做成块,然后插入块,就可以按照X/Y方向进行缩放了,给你截个图。
; G* S  _* h( d' F
- j0 `1 z5 s1 q. D4 j* J) D
$ H* ^" F6 c6 O7 `) w5 N 1.jpg
发表于 2011-8-3 11:27:30 | 显示全部楼层 来自: 中国江苏苏州
X,Y 向,缩放只有用对齐命令了
发表于 2011-8-4 03:25:36 | 显示全部楼层 来自: 中国辽宁
  1. ;;;主程序
    . ?2 H2 j- t! c- Q) D4 v( @
  2. (defun c:SXY (/ mydoc ss sp bn br s)- j6 }! t) q7 O- M6 U. q. S  ]* n
  3. (vl-load-com) ;加载VLISP扩展功能
    # c7 X$ x6 I9 W* Q1 U0 F; k1 B& m# _
  4. (setvar "CMDECHO" 0) ;关闭命令回显
    $ j* ~' i2 b) Z8 I$ W8 T7 j9 h4 g
  5. (setq mydoc (vla-get-activedocument (vlax-get-acad-object)))
    8 G+ S/ w& S# z
  6. ;用vla-get前缀函数获取当前CAD进程的活动文档对象
      Z4 m8 n, p& K+ t- f: B
  7. (setq ss (ssget)) ;创建选择集并由用户在屏幕上选取图元对象
    ; P& C# b& o6 I3 y0 u
  8. (if ss ;检查用户是否有效选择了图元4 p4 z3 _$ k# z6 a
  9. (progn ;当用户有效选择了图元时,执行下面的代码2 v, g( U6 H6 ~/ s- _$ i' X. B
  10. (setq sp (getpoint "\n指定基点:" ) ;指定缩放(块)基点" ?6 z2 T. @3 w- J+ I
  11. bn (strcat "temp" (rtos (getvar "cdate" ))) ;临时块名称6 p# y$ W- T3 g! g  M$ K
  12. )
    6 V0 R+ M, |5 h/ x8 Z, E5 \7 @7 h! `
  13. (command "-block" bn sp ss "" ) ;创建临时块并删除被选择的图元4 @: f; H7 C, t( \/ y
  14. (setq br ;在原位置按原尺寸插入临时块参照/ H1 E, t% C- C; U$ h. ^
  15. (vla-insertblock ;用vla-前缀函数调用当前空间的insertblock方法
    8 X3 H5 @' r- |$ O" ?0 P: W3 U. ]7 x
  16. (if (= (vla-get-activespace mydoc) acmodelspace)& {3 G& X+ z) y. o
  17. (vla-get-modelspace mydoc)0 h; S8 I0 _+ G  b' J) P" |
  18. (vla-get-paperspace mydoc)
    ( }# l; z, {) m! f
  19. ) ;获取活动文档的当前空间; B  F! w1 R2 L4 _% q
  20. (vlax-3d-point sp) ;块参照插入点
    6 }& g4 V  a4 w# u- T
  21. bn ;块名称
    7 Z4 e  G8 A& i, R1 h# h
  22. 1 ;X比例
    + O2 R4 I8 d8 h1 B
  23. 1 ;Y比例+ Q1 b. m8 I4 ~8 {
  24. 1 ;Z比例
    9 G5 L! U; }1 H0 `$ y, t* O
  25. 0 ;旋转角度* z. D% f2 V, s' t  M
  26. )# E0 J2 C: g: \$ L) z: q0 K
  27. )
    # H! j' R8 z9 |4 q/ f( s; D/ C
  28. (setq s (getscale "X" )) ;调用子程序获取X比例因子
    5 k4 t9 m: F+ W2 }. h
  29. (if s ;检查子程序返回值的有效性
    ) d- m& X( I1 o4 G0 @: L
  30. (progn ;当返回值有效时继续进行
    " o; H' R' F" Z
  31. (vla-put-xscalefactor br s) ;修改临时块参照的X比例属性9 [6 m9 X* b. }6 l5 D7 }
  32. (setq s (getscale "Y" )) ;调用子程序获取Y比例因子
    2 g* R" q9 q9 N# q- k% v, V0 W, _
  33. (if s ;检查子程序返回值的有效性
    0 x0 j" {5 V( ~* b
  34. (vla-put-yscalefactor br s) ;修改临时块参照的Y比例属性# t0 w7 g* r! T4 [0 |/ u, n7 V
  35. ); r) v/ n1 y5 ]5 h
  36. )) K3 w4 `8 Y& B) ~3 G
  37. )
    % \( Q5 M+ j- b# w/ P
  38. (vla-explode br) ;分解临时块参照6 ]2 I8 `; z: y; ?9 N7 _1 f( h
  39. (vla-delete br) ;删除临时块参照
    ; E0 r5 b; u: B% N
  40. (vla-delete ;删除临时块定义: H& A5 Q8 g1 A2 x4 w
  41. (vla-item (vla-get-blocks
    0 }" n" ?' q5 ]
  42. mydoc
    0 r6 f: @' K0 R! J/ X
  43. )
    5 B3 w/ x  Q) {& f7 S. `# N
  44. bn
    0 s9 _* X" |! C
  45. )0 ?* M* t* ^: i1 g
  46. ); \; _! G& i6 D. `' ^& |9 e
  47. )8 a4 ?( x/ x. ^6 ?' N
  48. )2 q. ~8 K4 i. [1 H5 p
  49. (setvar "CMDECHO" 1) ;打开命令回显
    $ @; q) V8 J- z2 Y
  50. (princ) ;静默退出
    . n. Z" Z8 C, K: T( X
  51. )
    ( \( l" I7 b5 V; j5 p# S/ s
  52. ;;;=====================================================================# ~: r4 Y" Y: r  o' w
  53. ;;;子程序0 Z9 h) t' N6 k. e1 @
  54. (defun getscale (s / ut sc l1 l2)$ |$ L8 n! p* N+ H
  55. (initget 2 "R" ) ;定义用户输入选项(禁止输入0)和关键字3 m, J% {& U# L0 @5 n6 w
  56. (setq sc ;用户指定距离做为比例因子7 h! l4 Q  B4 C! y) m
  57. (vl-catch-all-apply ;捕获用户输入时的错误" g6 f! v5 C4 Z% C- V  T+ q! O
  58. 'getdist
    ) ?" J. ^5 y. q; ]8 q9 C; h
  59. (list (strcat "\n指定 " s " 比例因子 或[参照(R)] <1.0000>:" )5 y$ W0 f" j9 R% s
  60. )& ^* M. P) R% f( c1 E. ]& w
  61. )" t5 }: M3 L6 s; J
  62. )1 E- _7 F- M" j5 L- @, y/ ?
  63. (if (vl-catch-all-error-p sc) ;检查用户输入时是否出错
    , h  u  @% V$ |$ T, F
  64. nil ;当用户输入出错时,子程序返回值为nil
    . a( M; m, _) N9 P1 I' r$ {
  65. (if sc ;用户输入正确时,检查是否直接回车6 `6 u5 ~& O3 M+ C$ `
  66. (if (= sc "R" ) ;检查用户是否输入关键字7 r1 D3 u/ ^) d! W
  67. (progn ;用户输入的是关键字(选择参照选项)  T2 V/ @% @: x. }$ r
  68. (initget 3) ;定义用户输入选项(禁止直接回车或输入0)5 l% O& k: Q2 G
  69. (setq l1 ;用户指定参照长度( `$ f/ f! r4 f" Y- T
  70. (vl-catch-all-apply ;捕获用户输入时的错误: I" X( B# a: ^" B" W2 O
  71. 'getdist
    ( l7 u  m: h; m% Y; c( }
  72. (list "\n指定参照长度:" )
    " |2 F& g8 R! i8 B+ `/ O
  73. )2 q2 P& I& _) b6 s+ Q, [
  74. )2 t/ M6 c8 P9 K4 ]& d1 G% L
  75. (if (vl-catch-all-error-p l1) ;检查用户输入时是否出错1 Y" x( b  l  M$ G, w
  76. nil ;当用户输入出错时,子程序返回值为nil8 S. q0 O9 t/ n. b1 B( B
  77. (progn ;用户输入正确时继续
    ) _  t. V6 X+ ^6 u* I' Q" F7 L
  78. (initget 3) ;定义用户输入选项(禁止直接回车或输入0); U: T2 i- z; w; H: d$ D
  79. (setq l2 ;用户指定新长度
    ! |# p& g7 E  Y% Z$ a: O; [
  80. (vl-catch-all-apply ;捕获用户输入时的错误6 `( `8 t2 F8 Y7 D  n/ ?* R
  81. 'getdist
    # Y& k. b9 `  P7 n# D
  82. (list "\n指定新长度:" )
    ) j! e. |* S2 I& s6 Z: y+ z
  83. ). Q* M% i$ y9 |5 o6 B
  84. )6 [( j) @, V; P1 w
  85. (if (vl-catch-all-error-p l2) ;检查用户输入时是否出错  ?" X7 B) K- ]$ X6 C
  86. nil ;当用户输入出错时,子程序返回值为nil* B1 k7 x/ M. r
  87. (/ l2 l1) ;用户输入正确时计算两个长度的比值做为子程序返回值
    . p& U: D. K" E) V9 C. g  D
  88. )
    9 P, y; O! t2 J
  89. )
    : ?/ D1 f" m+ z" `- v9 O
  90. )6 m3 L) h5 y$ r/ @! Y( _
  91. )* `! u( ]" Z) z9 T9 t
  92. sc ;用户输入的是长度值,以此做为子程序返回值
    , i, p+ b! J2 q) J9 c) W% E3 z
  93. )7 g4 u. g' {) }' g" h+ d& ~+ t
  94. 1 ;用户直接按回车,用默认的1.0000做为子程序返回值' H# A  K# B. A) Z
  95. )
    + p& u+ m/ B8 u
  96. )
    ' r; m. A  l( d0 x9 f' Y3 a
  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 )

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