QQ登录

只需一步,快速开始

登录 | 注册 | 找回密码

三维网

 找回密码
 注册

QQ登录

只需一步,快速开始

展开

通知     

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

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

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

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

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

x
本帖最后由 694865935 于 2011-8-2 11:18 编辑 0 X/ O+ H5 U$ l
6 E9 O: j- f* V" O% n
求助:CAD中怎么能缩放到合适的尺寸?一直让这个问题伤着了……
5 g- j- i$ k+ e+ L0 X' Y# u  求助,客户经常给一些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 编辑
) y8 o4 [$ z9 p/ j! \! v
. N- D$ m4 d# L6 t3 s; c" Q楼主,你把图形做成块,然后插入块,就可以按照X/Y方向进行缩放了,给你截个图。$ o9 e* r7 N8 z1 t4 t

1 @4 k" b8 ^. Q8 Q. |
$ [+ M1 N0 T' ~& v" x6 x! q' q 1.jpg
发表于 2011-8-3 11:27:30 | 显示全部楼层 来自: 中国江苏苏州
X,Y 向,缩放只有用对齐命令了
发表于 2011-8-4 03:25:36 | 显示全部楼层 来自: 中国辽宁
  1. ;;;主程序
    $ v, n* K; E9 k. n( P) q
  2. (defun c:SXY (/ mydoc ss sp bn br s)) w( B+ C6 Q  G+ i  r
  3. (vl-load-com) ;加载VLISP扩展功能
    ; F% l; `1 E4 e4 c% f% i1 p2 w6 Q$ _
  4. (setvar "CMDECHO" 0) ;关闭命令回显
    8 u: ]- z" q. y
  5. (setq mydoc (vla-get-activedocument (vlax-get-acad-object)))9 Y5 @! ~7 j" ^+ ^
  6. ;用vla-get前缀函数获取当前CAD进程的活动文档对象& K+ \  {- l8 B* U; i8 |
  7. (setq ss (ssget)) ;创建选择集并由用户在屏幕上选取图元对象
    $ e& h9 ^) a. Q- p) g3 D
  8. (if ss ;检查用户是否有效选择了图元
    1 ?7 E7 i6 N8 m8 b& H
  9. (progn ;当用户有效选择了图元时,执行下面的代码
    ( {: ^, B1 g2 p. x
  10. (setq sp (getpoint "\n指定基点:" ) ;指定缩放(块)基点( \! J. J, n3 f5 {
  11. bn (strcat "temp" (rtos (getvar "cdate" ))) ;临时块名称- C# Q9 b6 o$ R: k0 Y( r( n% @
  12. )! p, _% G  U# ]5 _
  13. (command "-block" bn sp ss "" ) ;创建临时块并删除被选择的图元
    # v5 m# @5 {$ j( q4 l1 C
  14. (setq br ;在原位置按原尺寸插入临时块参照
    3 R# }- u* ~% ]& Q& }
  15. (vla-insertblock ;用vla-前缀函数调用当前空间的insertblock方法- o5 V0 o$ i' W2 J) m1 ^
  16. (if (= (vla-get-activespace mydoc) acmodelspace)
    # n$ q0 w7 U* P: @1 C
  17. (vla-get-modelspace mydoc)' u6 E- d! t, m$ ~! y# d9 k
  18. (vla-get-paperspace mydoc), z# J6 w7 x) \9 r0 @6 e: m! w& R0 a
  19. ) ;获取活动文档的当前空间
    + u9 i* }, A- ~( p
  20. (vlax-3d-point sp) ;块参照插入点
    / g. b0 g/ V+ G3 A( g: t2 `
  21. bn ;块名称
    0 ?( U5 {* Z7 Z1 |) S
  22. 1 ;X比例
    ! s5 }1 q, l% a( I6 ]' a
  23. 1 ;Y比例
    * b0 H- j5 |9 X1 V
  24. 1 ;Z比例6 O; ^2 _# I/ @$ Z
  25. 0 ;旋转角度: E$ C; |- B; Y' s& @0 }
  26. )
    9 F7 O8 `, k7 [- ?# m. X
  27. )# d3 N' |; o% `+ J7 Z2 C
  28. (setq s (getscale "X" )) ;调用子程序获取X比例因子
    ! m2 T0 l, J- z) c* n
  29. (if s ;检查子程序返回值的有效性
    ( w/ P9 Y, z$ t; p# c4 q9 C
  30. (progn ;当返回值有效时继续进行
    ; q+ h3 J  r* V; z3 F
  31. (vla-put-xscalefactor br s) ;修改临时块参照的X比例属性+ O( G5 Z7 A+ y, K
  32. (setq s (getscale "Y" )) ;调用子程序获取Y比例因子
    & m* D  O( x; T( q
  33. (if s ;检查子程序返回值的有效性  ^  `7 @& L+ {5 g1 q7 y3 i
  34. (vla-put-yscalefactor br s) ;修改临时块参照的Y比例属性, N5 v& K5 }" Y$ G, j/ k* v# X
  35. ): R; p# R* k8 `7 Q' ~5 v- M
  36. )
    2 ]! J5 N& E! g, c
  37. ). h: L% D: B& E# Y- I; e) [! a" ~6 _
  38. (vla-explode br) ;分解临时块参照
    6 y- \. E3 i5 ^9 b' g# ]
  39. (vla-delete br) ;删除临时块参照
    ' ^: ?) Z# v  W
  40. (vla-delete ;删除临时块定义
    0 [- L8 V% r; ]
  41. (vla-item (vla-get-blocks
    : r: a/ p# K0 I* d9 f
  42. mydoc
    - m0 l; o* h! _! p) Q1 v
  43. )
    2 J9 F, L5 m0 K- l7 r
  44. bn
    ) l* N) ^. f/ e7 E/ y
  45. )9 ?, h! J3 i! I; P
  46. )
    " X' ?6 _) O9 h* B5 [. P( j
  47. )( p- I8 h  G, y! d4 B- z; q
  48. )9 a. I# p% k. N6 x& S. [# f! v. ?' {4 Y
  49. (setvar "CMDECHO" 1) ;打开命令回显0 C  n+ n+ m# i9 O' Q$ t$ v+ J
  50. (princ) ;静默退出
    4 L) ~5 ^* L- b( o
  51. )
      {  L( J4 f) d6 o; q
  52. ;;;=====================================================================
    1 X( D9 h1 F( n; T% `
  53. ;;;子程序+ l, D; b  d0 R; J" o+ l$ u9 E% ?; D+ [
  54. (defun getscale (s / ut sc l1 l2)& _. l4 ^$ x: F6 T  Y* @
  55. (initget 2 "R" ) ;定义用户输入选项(禁止输入0)和关键字, P" g+ K' r: `+ N, C7 `/ Q5 i. A
  56. (setq sc ;用户指定距离做为比例因子
    / [. L: d' p0 {/ s8 t) b
  57. (vl-catch-all-apply ;捕获用户输入时的错误
    + @/ p, K: L0 y! e# F, [
  58. 'getdist! t- E6 o/ b( Q  W$ G. [1 {
  59. (list (strcat "\n指定 " s " 比例因子 或[参照(R)] <1.0000>:" )$ b) a, V3 d1 D. [  J! R
  60. )' w$ h9 J0 `, H; w3 ~
  61. )# T1 k$ {' B7 e" g- |9 ~
  62. )
    ; T& y9 ~. K. i. w6 A
  63. (if (vl-catch-all-error-p sc) ;检查用户输入时是否出错& w% y4 R/ W" I; g
  64. nil ;当用户输入出错时,子程序返回值为nil3 V2 [% t$ S4 b, e2 z7 Y
  65. (if sc ;用户输入正确时,检查是否直接回车6 Y* `. q6 ]8 M6 k
  66. (if (= sc "R" ) ;检查用户是否输入关键字
    % L* o; p  ?" Y4 D
  67. (progn ;用户输入的是关键字(选择参照选项)
    ; W) @* J7 a# Z
  68. (initget 3) ;定义用户输入选项(禁止直接回车或输入0)* z2 v) _' l) C& B
  69. (setq l1 ;用户指定参照长度7 P) [; P# H' ?" N
  70. (vl-catch-all-apply ;捕获用户输入时的错误
    ) G0 Z( X; b# J/ H3 m5 M
  71. 'getdist
    ) j* E& q; S  ]# {
  72. (list "\n指定参照长度:" )
    2 A& \% s0 v5 H+ U; c- ~' x
  73. )
    / u! g2 Z, R/ M1 g  {1 E
  74. )2 A! f5 P5 t( c6 Q# }  _( ?
  75. (if (vl-catch-all-error-p l1) ;检查用户输入时是否出错
    * R3 P2 B4 k2 S* R/ T
  76. nil ;当用户输入出错时,子程序返回值为nil. ~  s: P" }  Y2 N% q6 o0 [8 N0 l6 H
  77. (progn ;用户输入正确时继续
    / ?  ]/ h1 G5 L3 ]
  78. (initget 3) ;定义用户输入选项(禁止直接回车或输入0)
    1 I7 @3 m/ I9 Z9 {8 m$ g# H
  79. (setq l2 ;用户指定新长度
    ' Y6 [7 A1 j1 F5 r" [+ d0 w5 o4 C
  80. (vl-catch-all-apply ;捕获用户输入时的错误
    3 w% m+ T& Z; z4 ^* R
  81. 'getdist; q# ], q  e: K1 W
  82. (list "\n指定新长度:" )
    ) {3 F9 c/ P0 R( q+ J, s6 p
  83. )
    ; O% W& U# u6 ^9 v! H
  84. )* z. m& U% D$ v8 _! {/ H
  85. (if (vl-catch-all-error-p l2) ;检查用户输入时是否出错
    6 D. v) l" Z3 n% E" Z3 h
  86. nil ;当用户输入出错时,子程序返回值为nil
      C( z) h  J6 k0 y, c
  87. (/ l2 l1) ;用户输入正确时计算两个长度的比值做为子程序返回值
    - j% U& F8 G  d$ x6 R, q1 r& f' T
  88. )7 F/ m) z/ y' Z1 S# ^3 K0 r- K2 c
  89. )/ \2 y' }; q' a) i/ ^
  90. )* f$ F* ]2 b; ]4 v. |: {
  91. )7 ]8 f  K" \, E
  92. sc ;用户输入的是长度值,以此做为子程序返回值. t7 G' J& K' {% ?" X
  93. ); e' X" ?) F1 ]( }) O
  94. 1 ;用户直接按回车,用默认的1.0000做为子程序返回值
    + b7 `' d" H, b. `. f: ?/ I
  95. )
    " n) i) _" t9 e. {2 \; c
  96. )
    ( @9 \, l4 F! ?( W) F
  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 )

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