明经CAD社区

 找回密码
 注册

QQ登录

只需一步,快速开始

搜索
查看: 1867|回复: 0

长度的非线性的放大

[复制链接]
发表于 2004-1-4 08:07:00 | 显示全部楼层 |阅读模式
请教:
如何获取物体的长度(在x, y, z方向上),该函数的目的是SCALE一个物体,比例是关于长度的非线性函数,所以想先获得物体的原长度,再代入这个函数得到新的长度,再把这个新长度赋给物体,这三步我都不是很清楚,请帮我修改一下下面的程序,它是针对一个box的,如果是关于一个较复杂的电视机的,该如何操作?谢谢你们!
xqy66@hotmail.com



DEFUN XFunc
(Xscale)
  (+ (EXPT Xscale 3.0) Xscale 1.0)
)

(DEFUN YFunc (Yscale)
  (+ (* Yscale Yscale) (* 2.0 Yscale) 5.0)
)

(DEFUN ZFunc (Zscale)
  (+ (EXPT Zscale 1.0) Zscale 2.0)
)

(DEFUN bboxe (bbox / L W H UX UY UZ)
(SETQ bbox ((VLA-GETBOUNDINGBOX obj 'll 'ur)
                (MAPCAR 'VLAX-SAFEARRAY->LIST (LIST ll ur)))
  )
  (SETQ ll (CAR bbox)
        ur (CADR bbox)
  )
  (SETQ L1 (- (CAR ur) (CAR ll))
        W1 (- (CADR ur) (CADR ll))
        H1 (- (CADDR ur) (CADDR ll))
  )
   
  (SETQ L (APPLY 'XFunc (LIST L1))
        W (APPLY 'YFunc (LIST W1))
        H (APPLY 'ZFunc (LIST H1))
  )
  (SETQ UX (+ (CAR ur) L)
        UY (+ (CADR ur) W)
        UZ (+ (CADDR ur) H)
  )
  
  (VLAX-SAFEARRAY-PUT-ELEMENT bbox 2 1 UX)
  (VLAX-SAFEARRAY-PUT-ELEMENT bbox 2 2 UY)
  (VLAX-SAFEARRAY-PUT-ELEMENT bbox 2 3 UZ)
  
  (VLAX-SAFEARRAY->LIST bbox)
)

(DEFUN c:testbb              (/ obj bbox L W H)
  (vl-load-com)
  (SETQ obj (VLAX-ENAME->VLA-OBJECT (CAR (ENTSEL "\nPick the box to
scale: "))))
  (bboxe obj XFunc YFunc ZFunc)
  (PROMPT "\box has been scaled.")
  (PRINC)
)
您需要登录后才可以回帖 登录 | 注册

本版积分规则

小黑屋|手机版|CAD论坛|CAD教程|CAD下载|联系我们|关于明经|明经通道 ( 粤ICP备05003914号 )  
©2000-2023 明经通道 版权所有 本站代码,在未取得本站及作者授权的情况下,不得用于商业用途

GMT+8, 2025-4-4 20:06 , Processed in 0.167395 second(s), 24 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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