wjnnan 发表于 2015-11-5 13:11:49

请帮忙测试,修改填充比例或角度,64位win7,cad2008可用,求再优化

;参考了明经论坛ucuc2003和Gu_xl的源码
;修改填充图案比例
(defun C:gtb (/ hpsc ss name ent old_hatchbl new_hatchbl n )
   (setvar "cmdecho" 0)
   (setq hpsc (getvar "hpscale"))
   (command "_.undo" "_begin")
   (princ "\n请选择需要改变比例的填充图案")
   (setq ss (ssget '((0 . "hatch"))) )   
   (setq name (ssname ss 0))
   (setq ent (entgetname))
   (setq old_hatchbl (cdr (assoc 41 ent)))
   (setq n 0) ;序号的初值设为0      
   (princ (strcat "\n当前填充图案的比例:<"(rtos old_hatchbl 2 2 )">"))
   (setq new_hatchbl (getdist "\n请输入新的填充比例"))
   (if (= new_hatchbl nil) (setq new_hatchbl old_hatchbl))
   (repeat
   (sslength ss);重复执行ss的长度的次数,即对象的个数
   (setq name (ssname ss n));得到选择集内第n个对象的图元名      
   (vla-put-PatternScale (vlax-ename->vla-object name) new_hatchbl)   
   (setq n(1+ n));序号n的数量加1   
   );end repeat
   (command "_.undo" "_end")
   (setvar "hpscale" hpsc)
   (princ (strcat "\n填充比例已改为:<"(rtos new_hatchbl)"> "))
   (princ)
);end defun


;修改填充图案角度
(defun C:gtj (/ oldhpang ss name ent old_hatchjd new_hatchjd n )
    (setvar "cmdecho" 0)
    (setq oldhpang (getvar "hpang"))
    (command "_.undo" "_begin")
    (princ "\n请选择需要改变角度的填充图案")
    (setq ss (ssget '((0 . "hatch"))) )   
    (setq name (ssname ss 0))
    (setq ent (entget name))
    (setq old_hatchjd (cdr (assoc 52 ent)))
    (setq n 0) ;序号的初值设为0      
    (princ (strcat "\n当前填充图案的角度:<"(angtos old_hatchjd )">度"))
    (setq new_hatchjd(getangle "\n请输入新的填充角度"))
    (if (= new_hatchjd nil) (setq new_hatchjd old_hatchjd))   
    (repeat
      (sslength ss);重复执行ss的长度的次数,即对象的个数
      (setq name (ssname ss n));得到选择集内第n个对象的图元名
      (vla-put-PatternAngle (vlax-ename->vla-object name) new_hatchjd)   
      (setq n(1+ n));序号n的数量加1
    );end repeat
    (command "_.undo" "_end")
    (setvar "hpang" oldhpang)
    (princ (strcat "\n填充角度已改为:<"(angtos new_hatchjd)">度 "))
    (princ)
);end defun
页: [1]
查看完整版本: 请帮忙测试,修改填充比例或角度,64位win7,cad2008可用,求再优化