明经CAD社区

 找回密码
 注册

QQ登录

只需一步,快速开始

搜索
查看: 1773|回复: 4

程序出错,请教vla-get-length怎么用?

[复制链接]
发表于 2005-10-25 13:24 | 显示全部楼层 |阅读模式

我编了如下一段程序,设想是选择一组图元,可以将所有的线型都改为虚线,虚线的线型比例按各条线的长度进行计算并自动设置.但程序运行的结果是选择的一批图元中只有一个图元的线型改成了虚线,其他的都没有改过来.自己分析了一下,是(setq len (vla-get-length vla-st)) 这句出了问题,对第一个图元能够运行,对第二个图元运行就出错了.

   请教各路好汉,是出了什么问题?

(defun C:hh()
  (setq ss(ssget))
  (vl-load-com)
  (setq acaddocument (vla-get-activedocument(vlax-get-acad-object)))
  (setq found :vlax-false)
  (setq LinetypeSel(vla-get-Linetypes AcadDocument))
  (VLAX-FOR entry LinetypeSel

    (if (= (vla-get-Name entry) "HIDDEN")

      (setq found :vlax-true)

    )

  )
  (if (= found :vlax-false)

    (vla-load LinetypeSel "HIDDEN" "acad.lin")

  )
  (setq nn(sslength ss))
  (setq na 0)
  (while (< na nn)
    (setq st (ssname ss na))
    (setq vla-st (vlax-ename->vla-object st))
 
 
   (if  (setq len (vla-get-length vla-st))
     (progn
  (setq  len (* len 0.6))
  
    (vla-put-linetype vla-st "HIDDEN")
    (vla-put-linetypescale vla-st len)
       ))
    (setq na(1+ na))
    ); end of while
   
  (princ)
  )

发表于 2005-10-25 15:46 | 显示全部楼层
;;注意:只有"LINE"有LENGTH属性
 楼主| 发表于 2005-10-25 16:19 | 显示全部楼层
     谢谢班主,那再请教一下,有没有函数可以适用于这个程序用来求各种图元的长度
 楼主| 发表于 2005-10-25 16:22 | 显示全部楼层
     班主好象说得不合运行结果,这个程序只改一批图元中的一个图元的线型,有时只改一个圆的线型而不改直线的线型.vla-get-length不会只适合直线.
发表于 2005-10-25 20:15 | 显示全部楼层
本帖最后由 作者 于 2005-10-25 20:35:57 编辑

  1. (load "xyp_lib")
  2. ;|加载通用函数(可在签名栏直接下载)
  3. 如果已经下载xyp_lib并放到搜索路径下可以不再下载!
  4. 利用以下任何一种方式(首选第一种)即可加载和运行通用函数内的所有子程序:
  5. ★1·在acad.lsp中增加(load"xyp_lib")
  6. ■2·在每个程序内增加(load"xyp_lib")
  7. ■3·在command下,输入(load"xyp_lib")
  8. ■4·在菜单.mnl中增加(load"xyp_lib")
  9. ■5·将xyp_lib.vlx文件直接拽到cad屏幕
  10. [COLOR=red] ★通用函数下载地址:[/COLOR]
  11. [url]http://www.xdcad.net/forum/attachment.php?s=&postid=1606661[/url]
  12. [url]dispbbs.asp?boardID=3&ID=37554&page=1[/url]
  13. |;
  14. ;;;虚线的线型比例按各条线的长度进行计算并自动设置
  15. (defun C:test ()
  16.   (cmdla0)
  17.   (JZXX "HIDDEN" "acad.lin")  
  18.   (setq ss (ssget '((0 . "CIRCLE,ELLIPSE,*LINE,ARC")))
  19. i  -1
  20.   )
  21.   (while (setq s1 (ssname ss (setq i (1+ i))))
  22.     (setq len (* (xyp-get-CurveLength s1) 0.6))
  23.     (vla-put-linetype (vla-obj s1) "HIDDEN")
  24.     (vla-put-linetypescale (vla-obj s1) len)
  25.   )
  26.   (cmdla1)
  27. )
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2024-5-19 08:17 , Processed in 0.230297 second(s), 25 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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