本帖最后由 【KAIXIN】 于 2013-2-4 14:33 编辑
(XX-PUT-DXF (SSGET) 40 (GETDIST));改文字高度
对于表格,建议用中心缩放文字

- (defun c:xx ( / i lts s1 ss)
- (setq lts (getdist "缩放比例")
- ss (ssget ":s" '((0 . "*TEXT")))
- i -1
- )
- (while (setq s1 (ssname ss (setq i (1+ i))))
- (xx-sc s1 (xx-get-s1-9pt s1 5) lts)
- )
- )
- ;缩放实体或选择集
- ;(XX-Sc s1 PO lts) S1为图元名或选择集 PO lts基点与比例
- (DEFUN XX-Sc (S1 PO LTS / TP PT I NAME)
- (setq tp (type s1) ;提取类型
- pt (vlax-3D-point (trans PO 1 0));转成基点
- )
- (cond
- ((= tp 'ENAME) (vla-scaleentity (XX-E2O s1) pt lts));XX-E2O 转换为 VLA 对象
- ((= tp 'PICKSET)
- (setq i -1)
- (while (setq NAME (ssname s1 (setq i (1+ i))))
- (vla-scaleentity (XX-E2O NAME) pt lts);XX-E2O 转换为 VLA 对象
- )
- )
- ((= tp 'LIST) (foreach NAME S1 (XX-Sc NAME PO lts)));函数遍历表,将其中每一个元素依次赋给变量,并对每一个表达式求值
- (T
- (alert "缩放 通用函数错了!");都不成立,就打印输入通用函数错了信息
- )
- )
- s1
- )
- (defun XX-Get-S1-9pt (s1 mode / dx dy point pointmax pointmin x1 x2 y1 y2)
- (IF(and (= (type s1) 'ENAME)(= (type mode) 'INT))
- (progn
- (vla-getboundingbox(XX-E2O s1) 'minpoint 'maxpoint);XX-E2O转为VLA对象
- (setq pointmax (vlax-safearray->list maxpoint);取得第9点
- pointmin (vlax-safearray->list minpoint);取得第1点
- x1 (car pointmin)
- x2 (car pointmax)
- y1 (cadr pointmin)
- y2 (cadr pointmax)
- dx (/ (- x2 x1) 2.0)
- dy (/ (- y2 y1) 2.0)
- )
- (cond ((= mode 1) (setq point pointmin))
- ((= mode 2) (setq point (list (+ x1 dx) y1)))
- ((= mode 3) (setq point (list x2 y1)))
- ((= mode 4) (setq point (list x1 (+ y1 dy))))
- ((= mode 5) (setq point (list (+ x1 dx) (+ y1 dy))))
- ((= mode 6) (setq point (list x2 (+ y1 dy))))
- ((= mode 7) (setq point (list x1 y2)))
- ((= mode 8) (setq point (list (+ x1 dx) y2)))
- ((= mode 9) (setq point pointmax))
- (t (setq point pointmin))
- )
- point
- )
- (alert "指定图元最小外接矩形的九点坐标,通用函数错了!")
- )
- )
|