找回密码
 立即注册

QQ登录

只需一步,快速开始

扫一扫,访问微社区

查看: 791|回复: 9

[求助] [求助]:请高手帮忙看看这个"线段等分打断"程序为什么会'认生"

[复制链接]
发表于 2005-3-29 18:31:30 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

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

×
我是从论坛下载这"线段等分打断"程序,很实用方便,是我一人在单位四台机子拷贝加载,却获得二个效果,二台能运行命令行提示见图一,,二台无法运行命令行提示见图二.
        四台机子都是XP操作系统,我都加载在CAD2004版本,CAD2004并没有装任何外挂工具,但二台无法运行的还装有CAD2002版本,我不懂编程,误认为是否二个版本冲突引起,就将CAD2002删除了,但还是不能运行,见笑了.
       恳请高手帮看看到底是什么原因,会不会程序不完善呢.附上该程序,先谢谢了!


(defun c:xbr (/ os oe ss vss n d len e obj e)
  (princ "\n等分打断线段")
  (defun *error* (msg) (setvar "osmode" os)(vl-cmdf ".undo" "e")(setq *error* oe))
  (vl-cmdf ".undo" "be")
  (princ "\n选择要等分的对象:")
  (setq oe  *error*
        os  (getvar "osmode")
        ss  (ssget '((0 . "LINE,*POLYLINE,SPLINE,ARC")))
        vss (vla-get-activeselectionset (vla-get-activedocument (vlax-get-acad-object))))
  (setvar "osmode" 0)
  (or (setq n (getint "\n定数等分<需定距等分/直接回车>:")) (setq d (getdist "\n指定线段长度:")))
  (vlax-for obj vss
    (setq len (vlax-curve-getdistatparam obj (vlax-curve-getendparam obj))
          e   (vlax-vla-object->ename obj))
    (if n (setq d (/ len n) m n)
          (setq m (1+ (fix (/ len d)))))
    (repeat (1- m)
      (if (setq pt (vlax-curve-getpointatdist obj d))
          (vl-cmdf ".break" (list e pt) pt)
      )
      (setq e   (entlast)
            obj (vlax-ename->vla-object e))
    )
  )
  (setvar "osmode" os)
  (vl-cmdf ".undo" "e")(princ)
)
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
发表于 2005-3-30 11:41:45 | 显示全部楼层
我也有问题 我不怎么看得懂Vlisp
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

发表于 2005-3-30 12:24:09 | 显示全部楼层
VLISP中這句會經常出錯,
(vla-get-activeselectionset
  (vla-get-activedocument (vlax-get-acad-object))
)
[轉貼]
調用activeselectionset時真正的內部過程是
新建CURRENT選擇集(如果選擇集不存在則新建,如果選擇集
存在則Clear清空)->用AddItems方法將最後一次選擇集的物
件放到該選擇集中。
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

 楼主| 发表于 2005-3-30 15:02:49 | 显示全部楼层
斑主您好!
我一点都不懂编程,所以您所讲的我一点听不懂,麻烦您帮修改一下,使程序完善传上好吗?
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

发表于 2005-3-30 16:25:03 | 显示全部楼层
试试这个,我改了一下
(defun c:xbr (/ os oe ss vss n d len e obj e)
  (princ "\n等分打断线段")
  (defun *error* (msg)
    (setvar "osmode" os)
    (vl-cmdf ".undo" "e")
    (setq *error* oe)
  )
  (vl-cmdf ".undo" "be")
  (princ "\n选择要等分的对象:")
  (setq        oe *error*
        os (getvar "osmode")
        ss (ssget '((0 . "LINE,*POLYLINE,SPLINE,ARC")))
        i  0
  )
  (setvar "osmode" 0)
  (or (setq n (getint "\n定数等分<需定距等分/直接回车>:"))
      (setq d (getdist "\n指定线段长度:"))

  )
  (repeat (sslength ss)
    (setq e (ssname ss i))
    (setq obj (vlax-ename->vla-object e)
          len (vlax-curve-getdistatparam obj (vlax-curve-getendparam obj))
    )
    (if        n
      (setq d (/ len n)
            m n
      )
      (setq m (1+ (fix (/ len d))))
    )
    (repeat (1- m)
      (if (setq pt (vlax-curve-getpointatdist obj d))
        (vl-cmdf ".break" (list e pt) pt)
      )
      (setq e        (entlast)
            obj        (vlax-ename->vla-object e)
      )
    )
    (setq i (1+ i))
  )
  (setvar "osmode" os)
  (vl-cmdf ".undo" "e")
  (princ)
)
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

 楼主| 发表于 2005-3-30 17:11:18 | 显示全部楼层
ljpnb 您好!
先谢谢您的热情帮助,我预防命令冲突,事先将您给我程序运行命令改过的.
我刚去原无法运行的机子试了,回车后,可输入等分数值,但没有打断还是原线段,但我在原能运行命令的机子试了,又是能运行打断的,太奇怪了,更怪的是今天我同事用了出现打断等分不一样的现象,再次恳求您们高手帮改改,再次表示感谢!
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

发表于 2005-3-30 18:31:52 | 显示全部楼层
搞不明白了,我们运行都是正常的,为什么会是这样。。。。。
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

 楼主| 发表于 2005-3-30 21:07:05 | 显示全部楼层
ljpnb  您好!
真不好意思,给您增添不少麻烦了.我也感到怪,我在家用也很好用.但在单位的机子就发现这问题,我想也许程序本来就很奥秘吧?但这一点肯定,这程序决对是不完善的,我也想放弃了,
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

发表于 2005-3-30 21:39:26 | 显示全部楼层
会不会少这句 (vl-load-com)
你把这句加在最前面再试试
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

 楼主| 发表于 2005-3-31 05:18:29 | 显示全部楼层
ljpnb 您好!
太过意不去了,您的热心帮助,使我感到您是一个好心人,好人有好报.我上午去单位试了,成功了,您是真正的高手.
但另外这程序还有个问题,在西南等轴测画曲线再用三维动态观察器转动后去打断时,有时会出现打断的等分数少了,产生长短不一,有时又是绝对等分,挺奇怪的.您不信的话多试试,不知这问题如何解决?
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|申请友链|Archiver|手机版|小黑屋|辽公网安备|晓东CAD家园 ( 辽ICP备15016793号 )

GMT+8, 2025-9-28 00:37 , Processed in 0.189909 second(s), 50 queries , Gzip On.

Powered by Discuz! X3.5

© 2001-2025 Discuz! Team.

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