QQ登录

只需一步,快速开始

登录 | 注册 | 找回密码

三维网

 找回密码
 注册

QQ登录

只需一步,快速开始

展开

通知     

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

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

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

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

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

x
本帖最后由 694865935 于 2011-8-2 11:18 编辑
' v% _4 f6 J1 A3 \& ~  ~# _" J7 `- V2 T$ L" U6 B' w/ B* a
求助:CAD中怎么能缩放到合适的尺寸?一直让这个问题伤着了……
! a" U% v4 f" n& M* S- I/ N% N* b  求助,客户经常给一些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 编辑
. @# S# L. P) B2 ~4 |1 R
1 V6 O- l( X0 B* q' b楼主,你把图形做成块,然后插入块,就可以按照X/Y方向进行缩放了,给你截个图。/ L6 @. Q; e; N; ?
, W+ \4 `& m3 t+ \  a
" L- P2 [7 ~* ^. c, ?+ a# R
1.jpg
发表于 2011-8-3 11:27:30 | 显示全部楼层 来自: 中国江苏苏州
X,Y 向,缩放只有用对齐命令了
发表于 2011-8-4 03:25:36 | 显示全部楼层 来自: 中国辽宁
  1. ;;;主程序
    # r* \% u0 X2 {3 s3 d
  2. (defun c:SXY (/ mydoc ss sp bn br s)
    ' A6 R/ p! S& h
  3. (vl-load-com) ;加载VLISP扩展功能& ?2 v6 M! X; S5 J4 B
  4. (setvar "CMDECHO" 0) ;关闭命令回显
    / P, h% j$ D, u$ o+ C- T. ?
  5. (setq mydoc (vla-get-activedocument (vlax-get-acad-object)))
    2 }7 b" h2 I" n+ t4 i0 i/ B
  6. ;用vla-get前缀函数获取当前CAD进程的活动文档对象5 U# V1 h  J- i; G
  7. (setq ss (ssget)) ;创建选择集并由用户在屏幕上选取图元对象. z+ j+ b& Q# H. Z) V* s2 n
  8. (if ss ;检查用户是否有效选择了图元
    ; x% J1 W& i8 M2 ~0 ~
  9. (progn ;当用户有效选择了图元时,执行下面的代码  v' [8 M8 W7 `0 `
  10. (setq sp (getpoint "\n指定基点:" ) ;指定缩放(块)基点
    / g& l" ^1 r$ E3 l  O( W( B
  11. bn (strcat "temp" (rtos (getvar "cdate" ))) ;临时块名称
    + o  @' c" o7 L  h- A: L
  12. )8 x" f- A' b; d
  13. (command "-block" bn sp ss "" ) ;创建临时块并删除被选择的图元/ S& p& k4 y& j+ @* B
  14. (setq br ;在原位置按原尺寸插入临时块参照6 M( k& v. a7 ?% ~0 v1 h0 D
  15. (vla-insertblock ;用vla-前缀函数调用当前空间的insertblock方法) X' N# |  d! j  ?' k! o7 g" @, P
  16. (if (= (vla-get-activespace mydoc) acmodelspace)0 P; s& y4 b5 M  p: P, W$ ~* u
  17. (vla-get-modelspace mydoc)
    & i4 y; z$ X$ ]% ?6 P6 a
  18. (vla-get-paperspace mydoc)
    8 W) _, `1 Q( h8 d' @
  19. ) ;获取活动文档的当前空间9 Z) f5 g3 I2 J2 d1 \
  20. (vlax-3d-point sp) ;块参照插入点$ ?. N: s5 X4 t& Q" `/ K
  21. bn ;块名称
    4 r: _+ a1 k& V- e
  22. 1 ;X比例4 R; U, C7 Y& h5 ]8 C5 s
  23. 1 ;Y比例
    $ d# o0 j2 @& W+ L' S7 U
  24. 1 ;Z比例( W6 J0 c* w7 G7 y& ^- V
  25. 0 ;旋转角度' a" X1 D- {$ E
  26. )
    + r0 S" B  J, l/ k
  27. ), K. A, ]3 v0 }6 [
  28. (setq s (getscale "X" )) ;调用子程序获取X比例因子3 K/ z: h+ B  Y& x( m& G$ {
  29. (if s ;检查子程序返回值的有效性$ ]$ V1 @( Q7 F2 A' T
  30. (progn ;当返回值有效时继续进行9 V: J$ d6 s; S, v) p
  31. (vla-put-xscalefactor br s) ;修改临时块参照的X比例属性
    ( K+ z1 F  A) R/ V) u! a  U) R" K$ B
  32. (setq s (getscale "Y" )) ;调用子程序获取Y比例因子2 }/ E: f% F( C4 H5 i
  33. (if s ;检查子程序返回值的有效性  n! A  U% O/ h& C( t
  34. (vla-put-yscalefactor br s) ;修改临时块参照的Y比例属性
    3 ^; F% n3 e/ h3 j- G; g
  35. )
    5 `  S) J. G) n0 p3 H( ~" g5 ]
  36. )& {& x* D3 O( t5 |9 M4 n: b# M1 X
  37. )# l5 e2 [8 H+ {
  38. (vla-explode br) ;分解临时块参照
    ; o9 n0 w4 P; `% a$ E' ?
  39. (vla-delete br) ;删除临时块参照" M9 i1 f2 ]# S: t
  40. (vla-delete ;删除临时块定义
    1 O# x' b' b1 Q4 r4 A' j
  41. (vla-item (vla-get-blocks3 p- P  [# n  k+ n! D
  42. mydoc1 v7 h9 z3 V, e! y: p: \0 M, l
  43. )/ b) J- e  r& t# u
  44. bn
    ) f) S1 `4 w6 T& a# m; Z, {+ T
  45. )' ^' [0 E) m5 \2 n. i% \; ?# d
  46. )9 |# x& X% z* j( j7 @
  47. )
    7 z- i. N" N$ |* {3 o
  48. )
    ' m. _# g0 n. u" y
  49. (setvar "CMDECHO" 1) ;打开命令回显
    7 E! h/ X! E! j; m$ Z& F, u
  50. (princ) ;静默退出6 g4 M  v5 V' q% `$ S1 J
  51. )
    ' t: r# D, Z  x- U
  52. ;;;=====================================================================7 R; w" Z" E: c  ?# b$ q8 i
  53. ;;;子程序: z7 B3 q' z+ ]
  54. (defun getscale (s / ut sc l1 l2)
    7 r9 }0 k' c# K& M# q7 ~8 M; I
  55. (initget 2 "R" ) ;定义用户输入选项(禁止输入0)和关键字
    * V+ k& d2 S8 K
  56. (setq sc ;用户指定距离做为比例因子' K: d. I3 C+ h* E( f* C! b
  57. (vl-catch-all-apply ;捕获用户输入时的错误
    , d) A6 I' \. @5 ?- G
  58. 'getdist
    1 U' f, _' A% {/ l7 m- J, _. M
  59. (list (strcat "\n指定 " s " 比例因子 或[参照(R)] <1.0000>:" )& T8 |, C2 ]# _9 b2 h
  60. )
    ' E/ V- A1 e: M, K2 f. W' D1 j
  61. )
    3 S; p! l& z9 a
  62. )
    8 [$ m. W# j1 I! q% [* ~4 V! H
  63. (if (vl-catch-all-error-p sc) ;检查用户输入时是否出错
    % D% I9 K' a/ t4 T
  64. nil ;当用户输入出错时,子程序返回值为nil( y, F( x2 s- S" y% O  U
  65. (if sc ;用户输入正确时,检查是否直接回车
    % v, ~8 z+ b8 k; O# B
  66. (if (= sc "R" ) ;检查用户是否输入关键字
    / S( S% ~7 F, U2 f! ~/ Y1 _) O) L
  67. (progn ;用户输入的是关键字(选择参照选项)
      D- ]+ L  W. V/ r  N: k
  68. (initget 3) ;定义用户输入选项(禁止直接回车或输入0)  U. I. b6 z; g# j" p* ^
  69. (setq l1 ;用户指定参照长度
    : R9 c$ x7 y! L
  70. (vl-catch-all-apply ;捕获用户输入时的错误2 @/ B5 I% A$ r3 u
  71. 'getdist
    % \4 U2 `& \& N
  72. (list "\n指定参照长度:" )0 S: X# ]2 e, ^
  73. )+ M& ~! W' x- n" X
  74. )8 x/ M7 N. ^2 e' w, a
  75. (if (vl-catch-all-error-p l1) ;检查用户输入时是否出错& ]; o# A. V; F  T' L$ a# C
  76. nil ;当用户输入出错时,子程序返回值为nil+ ^6 {% k, h9 m+ N
  77. (progn ;用户输入正确时继续
    2 d0 T% K: r  ?: [
  78. (initget 3) ;定义用户输入选项(禁止直接回车或输入0)/ a# i* y: z. n
  79. (setq l2 ;用户指定新长度
    , B& e; s" a3 y, Z
  80. (vl-catch-all-apply ;捕获用户输入时的错误. `. H/ D" `" o
  81. 'getdist3 L4 `9 I" J$ v& U6 z1 Q3 ?/ W5 N
  82. (list "\n指定新长度:" )
    / Z+ j2 |( f4 D
  83. )6 @& E+ F0 t& p# z: t/ B
  84. )
    1 Z& `7 o/ U' b' \- J
  85. (if (vl-catch-all-error-p l2) ;检查用户输入时是否出错1 q, ~" l* d! A  \8 J, }! C
  86. nil ;当用户输入出错时,子程序返回值为nil2 v! x8 g$ Z4 _% H% q5 N" K) A7 B2 t0 @
  87. (/ l2 l1) ;用户输入正确时计算两个长度的比值做为子程序返回值
    5 h1 w' I# l: H8 B. L
  88. )$ X; B  P5 u1 L: C
  89. )
    + |+ h4 k% n6 @& o
  90. )
    " e0 R0 i# {( h2 ]; ^
  91. )3 C3 m4 Z; _( l: n9 x" v
  92. sc ;用户输入的是长度值,以此做为子程序返回值
    4 R& `- w6 d* V) G/ V+ {1 B% ?: ]' H
  93. )
    / S0 {; q0 q# S7 E
  94. 1 ;用户直接按回车,用默认的1.0000做为子程序返回值/ }9 h& K. l$ f7 R9 @8 _) }6 f- g
  95. )* x" B; u( \; d3 a# T
  96. )+ u2 q/ v* t  _$ y, P+ F  x/ D
  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 )

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