找回密码
 立即注册

QQ登录

只需一步,快速开始

扫一扫,访问微社区

查看: 1137|回复: 2

[求助] [求助]:请问子程序可以套用子程序吗?

[复制链接]
发表于 2007-1-12 22:21:55 | 显示全部楼层 |阅读模式

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

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

×
以下是一个坐标排序子程序,套用了另一个获取图框顶点的子程序(见底部),但运行过程提示“错误: 参数类型错误:”,不知错在哪?

排序子程序:
[php](defun zhy_sort_se (se xory / newse nn index aal name lp cop item newsort n1 ind  ntt ty ll ur )
  (setq newse nil)
  (setq nn (sslength se))
  (setq index 0)
  (setq aal '())
  (repeat nn
    (setq name (ssname se index))
   
    (setq lp (entget name))
    (if        (or (= xory "-Y") (= xory "Y"))
      (setq coy (cadar (ax:GetBoundingBox lp)))
    )
    (if        (or (= xory "-X") (= xory "X"))
      (setq coy (caar (ax:GetBoundingBox lp)))
    )
    (if        (or (= xory "-XY") (= xory "XY"))
      (setq coy (+ (caar (ax:GetBoundingBox lp)) (cadar (ax:GetBoundingBox lp))))
    )   
    (setq item (list coy (cdr (assoc 5 lp))))
    (setq aal (cons item aal))
    (setq index (1+ index))
  )

  (if (= (substr xory 1 1) "-")
          (setq        newsort
                 (vl-sort aal
                          (function (lambda (e1 e2)
                                      (< (car e1) (car e2))
                                    )
                          )
                 )
          )
   
          (setq        newsort
                 (vl-sort aal
                          (function (lambda (e1 e2)
                                      (> (car e1) (car e2))
                                    )
                          )
                 )
          )
  )
   
  (setq n1 (length newsort))
  (setq ind 0)
  (repeat n1
    (setq ntt (nth ind newsort))
    (setq ind (1+ ind))
    (setq ty (handent (cadr ntt)))
    (if        (/= ty nil)
      (if (= newse nil)
        (setq newse (ssadd ty))
        (setq newse (ssadd ty newse))
      )
    )
  )
)
[/php]

获取图框顶点的子程序:
[php](defun ax:GetBoundingBox (sss / ll ur)
     (vla-getboundingbox (vlax-ename->vla-object sss) 'll 'ur)
     (mapcar 'vlax-safearray->list (list ll ur))
   )
[/php]
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!

已领礼包: 6个

财富等级: 恭喜发财

发表于 2007-1-12 23:29:56 | 显示全部楼层
(setq lp (entget name))   !lp是一个表
(defun ax:GetBoundingBox (sss / ll ur)  !sss要求是lisp图元
     (vla-getboundingbox (vlax-ename->vla-object sss) 'll 'ur)
     (mapcar 'vlax-safearray->list (list ll ur))
   )
(ax:GetBoundingBox lp) !所以:“错误: 参数类型错误:”
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

 楼主| 发表于 2007-1-13 01:33:53 | 显示全部楼层
谢谢楼上的,知道了。
我还想知道 (setq coy (+ (caar (ax:GetBoundingBox lp)) (cadar (ax:GetBoundingBox lp)))) 得出来是什么结果?我试过得出一个类似-224096.0-224096.0这样的数字,没什么意思,因此无法排序!
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-11-17 20:28 , Processed in 0.315013 second(s), 36 queries , Gzip On.

Powered by Discuz! X3.5

© 2001-2024 Discuz! Team.

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