找回密码
 立即注册

QQ登录

只需一步,快速开始

扫一扫,访问微社区

查看: 754|回复: 0

[求助]:请高手看下这个程序到底哪出错了?

[复制链接]
发表于 2007-10-10 16:06:01 | 显示全部楼层 |阅读模式

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

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

×
在网上下载了一个转换线段的程序,但找不到这个程序的命令,试了好多个还是不行,不知道是不是编的时候就有错了,我把命令全复制上来,大家帮看下到底是怎么回事,它的启动命令到底是什么呀?



;|程序功能说明:
=============
    将一个直线线段模拟转换成一个3DFACE/TRACE/SOLID实体,对于转换
的3DFACE,其交叉上下的数值可调。
    通过如此来对图形数据进行保护,限制了对直线进一步编辑的可能性,
同时又不会加大图形文件的大小。
    新生成的实体位于0 图层,颜色继承原来直线的颜色(随层时继承层
的颜色)。对于转换的3DFACE,在边界的显示上,只能显示成为交叉线边。
两端不封闭。

参数变量说明:
=============
  Entity=直线实体名                              [LIST/ENAME]
  Mode  =转换后新的实体名,之可以选择3DFACE/TRACE/SOLID。当不为
          3DFACE时,Ratio的设定无效,程序将自动设定Ratio为0
                                                  [STR/Alias]   
  Ratio =交叉上下的移动值,为直线长度的比值。允许为0,看看会怎样?
        (此值需要小于1,否则程序自动求倒数)      [STR/REAL/INT]

返回值:
======
  成功:新建的实体名,同时删除原直线。            [ENAME]
  失败:nil
|;
(Defun C:Kzm_System_ProtectLine->Alias (Entity Mode Ratio  /      E08     E10
                    E11    E62      Dist      3DF10     3DF11
                    3DF12  3DF13  Data Rtn
                    )
  (if (= (type Entity) 'ENAME)
    (setq Entity (entget Entity))
  )
  (if (null (member Mode (list "3DFACE" "TRACE" "SOLID")))
    (setq Mode "3DFACE")
  )
  (if (or (= Mode "TRACE")(= Mode "SOLID"))
    (setq Ratio 0.0)
  )
  (if (= (type Ratio) 'STR)
    (setq Ratio (read Ratio))
  )
  (if (> Ratio 1.0)
    (setq Ratio (/ 1.0 Ratio))
  )
  (setq    E08  (cdr (assoc 8 Entity))
    E10  (cdr (assoc 10 Entity))
    E11  (cdr (assoc 11 Entity))
    E62  (cdr (assoc 62 Entity))
    Dist  (* Ratio (distance E10 E11))
    3DF10 (polar E10 (+ (angle E10 E11) (* 0.5 pi)) Dist)
    3DF11 (polar E10 (- (angle E10 E11) (* 0.5 pi)) Dist)
    3DF12 (polar E11 (+ (angle E10 E11) (* 0.5 pi)) Dist)
    3DF13 (polar E11 (- (angle E10 E11) (* 0.5 pi)) Dist)
  )
  (if (null E62)
    (setq E62 (cdr (assoc 62 (tblsearch "Layer" E08))))
  )
  (setq    Data (list (cons 0 Mode)
          (cons 8 "0")
          (cons 10 3DF10)
          (cons 11 3DF11)
          (cons 12 3DF12)
          (cons 13 3DF13)
          (cons 62 E62)
        )
  )
  (if (= Mode "3DFACE")
    (setq Data (append Data (list (cons 70 5))))
  )
  (if (setq Rtn    (entmake Data))
    (entdel (cdr (assoc -1 Entity)))
  )
  Rtn
)


;|示例:
  (C:Kzm_System_ProtectLine->Alias (entlast) "3DFACE" 1000)
  (C:Kzm_System_ProtectLine->Alias (entlast) "3DFACE" 0)
  (C:Kzm_System_ProtectLine->Alias (entlast) "3DFACE" 0.0007)

  (C:Kzm_System_ProtectLine->Alias (entlast) "SOLID" 1000)
  (C:Kzm_System_ProtectLine->Alias (entlast) "SOLID" nil)

  (C:Kzm_System_ProtectLine->Alias (entlast) "TRACE" 1000)
  (C:Kzm_System_ProtectLine->Alias (entlast) "TRACE" nil)

|;

;以下为还原程序
;==============
(Defun C:Kzm_System_UnProtectAlias->Line
                     (Entity    /
                      C:Kzm_System_GetMiddlePoint
                      E08        E10
                      E11        E12
                      E13        Line10
                      Line12    E62
                      Rtn
                     )
  (Defun C:Kzm_System_GetMiddlePoint (Point1 Point2 / Rtn)
    (setq Rtn (polar Point1
            (angle Point1 Point2)
            (*    0.5
            (distance Point1
                  Point2
            )
            )
          )
    )
    Rtn
  )
  (if (= (type Entity) 'ENAME)
    (setq Entity (entget Entity))
  )
  (setq    E08    (cdr (assoc 8 Entity))
    E10    (cdr (assoc 10 Entity))
    E11    (cdr (assoc 11 Entity))
    E12    (cdr (assoc 12 Entity))
    E13    (cdr (assoc 13 Entity))
    E62    (cdr (assoc 62 Entity))
    Line10 (C:Kzm_System_GetMiddlePoint E10 E11)
    Line11 (C:Kzm_System_GetMiddlePoint E12 E13)
  )
  (if (null E62)
    (setq E62 (cdr (assoc 62 (tblsearch "Layer" E08))))
  )
  (if (setq Rtn    (entmake (list (cons 0 "LINE")
                  (cons 8 "0")
                  (cons 10 Line10)
                  (cons 11 Line11)
                  (cons 62 E62)
             )
        )
      )
    (entdel (cdr (assoc -1 Entity)))
  )
  Rtn
)
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

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

GMT+8, 2024-11-15 07:10 , Processed in 0.154116 second(s), 31 queries , Gzip On.

Powered by Discuz! X3.5

© 2001-2024 Discuz! Team.

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