找回密码
 立即注册

QQ登录

只需一步,快速开始

扫一扫,访问微社区

查看: 5184|回复: 44

[每日一码] 感谢版主们的鼓励,新手写了个小程序望指点

[复制链接]

已领礼包: 685个

财富等级: 财运亨通

发表于 2013-9-12 17:29:03 | 显示全部楼层 |阅读模式

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

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

×

  1. (defun c:111()
  2.         (setvar "cmdecho" 0)
  3.    ; 1 获取点位表
  4.    (setq ss (ssget '((0 . "LWPOLYLINE"))))
  5.   (if (< 300 (sslength ss))
  6.       (exit (PRINC"\n所选对象太多"))
  7.     )
  8.      (setq lst-pt1 '()          ;建立空表
  9.          lst-pt3 '()          ;建立空表
  10.          i 0)
  11.    (repeat (sslength ss)      ;选择集长度
  12.     (setq e1(ssname ss i))    ;返回第几个对象的图元名
  13.     (setq s1 (vlax-ename->vla-object e1))
  14.    (vla-getboundingbox s1 'minpoint 'maxpoint)
  15.    (setq pt9 (vlax-safearray->list maxpoint)                       ;取得 右上角 点
  16.          pt1 (reverse(cdr(reverse(vlax-safearray->list minpoint))));取得 左下角 点
  17.          pt3 (list(car pt9)(cadr pt1))                             ;取得 右下角 点
  18.    lst-pt1 (cons pt1 lst-pt1)      ;取得 左下角 点表  
  19.          lst-pt3 (cons pt3 lst-pt3)      ;取得 右下角 点表
  20.          i (1+ i))
  21.                  )   ;end repeat
  22.   (COMMAND ".UNDO" "BE")

  23.    ; 2 开始排位
  24. (setq ss1 (ssadd))
  25. (setq i 0)
  26. (setq n1 0)
  27. (setq n3 1)
  28.    (repeat (sslength ss)
  29.        (setq e1(ssname ss i))    ;返回第几个对象的图元名
  30.        (ssadd e1 ss1)            ;将它加到ss1选择集中
  31.         (command "move" ss1 "" (nth n1 (reverse lst-pt1))  (nth n3 (reverse lst-pt3)))
  32.         (setq n1 (1+ n1))
  33.         (setq n3 (1+ n3))
  34.         (setq i (1+ i))
  35.       );end repeat
  36.       (COMMAND ".UNDO" "e")
  37.       (PRINC"\n程序运行完毕")
  38.   (PRINC)
  39.    )   ;end defun


好久没发贴了,本人新手最近也在闭关修练中。。。。多得XD版主和NEWER版主鼓励重写,今天终于小有所成言归正传:   以上的程序是我上次发贴求助过的程序,贴子连接如下http://bbs.xdcad.net/thread-670063-1-1.html小部分源码摘自炫版主 (点表获取部分)
下面是我的思路:
1、几乎模拟纯手工操作,即第二个对象的左下角点移到第一个对象的右下角点,以此类推,多对象循环,
目前有还有些BUG,1 有时候不能排整齐,需要排列两次才能达到要求,还没找出原因,望高手解答一下。                 2 处理对象多于300个时很慢。所以加个判断超过300个对象时退程序另外:对于我等只会用COMMAND新手来说,写的一些程序真心不给力,(还是没学到V开头的函数)     各位大师有什么方法可以不用COMMAND吗?



评分

参与人数 1D豆 +5 收起 理由
炫翔 + 5 出题引导交流奖!

查看全部评分

论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!

已领礼包: 1268个

财富等级: 财源广进

发表于 2013-9-12 17:55:24 来自手机 | 显示全部楼层
本帖最后由 st788796 于 2013-9-12 17:56 编辑

1 move 受捕捉影响,所以用move的话要先关捕捉,或者用vla-move要快些
2 这个用矩阵简单,就是位移矩阵

点评

我试一下关捕捉 看能不能解决  详情 回复 发表于 2013-9-12 18:13
别说矩阵了,就连V开头的函数都没有学会呢。。。  详情 回复 发表于 2013-9-12 18:11
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

已领礼包: 1742个

财富等级: 堆金积玉

发表于 2013-9-12 18:08:26 | 显示全部楼层
总的来说不错,进步不小
(reverse(cdr(reverse 这句会比较慢,其他方法有很多的
move不一定比VLA-MOVE慢,
这些可测试时间

点评

原来是没有(reverse(cdr(reverse 的,,, 因为排序出错。。。以为是因为有了Z座标的原因。。所以去掉他  详情 回复 发表于 2013-9-12 18:16
第一次捧场哦~~ 对于新手来说,会用(reverse(cdr(reverse 已经很不错了。。 我想慢主要是用了MVOE吧。。。可怜我还不会其它方法  详情 回复 发表于 2013-9-12 18:12
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

已领礼包: 685个

财富等级: 财运亨通

 楼主| 发表于 2013-9-12 18:11:14 | 显示全部楼层
st788796 发表于 2013-9-12 17:55
1 move 受捕捉影响,所以用move的话要先关捕捉,或者用vla-move要快些
2 这个用矩阵简单,就是位移矩阵

别说矩阵了,就连V开头的函数都没有学会呢。。。
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

已领礼包: 685个

财富等级: 财运亨通

 楼主| 发表于 2013-9-12 18:12:53 | 显示全部楼层
炫翔 发表于 2013-9-12 18:08
总的来说不错,进步不小
(reverse(cdr(reverse 这句会比较慢,其他方法有很多的
move不一定比VLA-MOVE慢 ...

第一次捧场哦~~
对于新手来说,会用(reverse(cdr(reverse 已经很不错了。。
我想慢主要是用了MVOE吧。。。可怜我还不会其它方法
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

已领礼包: 685个

财富等级: 财运亨通

 楼主| 发表于 2013-9-12 18:13:32 | 显示全部楼层
st788796 发表于 2013-9-12 17:55
1 move 受捕捉影响,所以用move的话要先关捕捉,或者用vla-move要快些
2 这个用矩阵简单,就是位移矩阵

我试一下关捕捉   看能不能解决
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

已领礼包: 685个

财富等级: 财运亨通

 楼主| 发表于 2013-9-12 18:16:07 | 显示全部楼层
炫翔 发表于 2013-9-12 18:08
总的来说不错,进步不小
(reverse(cdr(reverse 这句会比较慢,其他方法有很多的
move不一定比VLA-MOVE慢 ...

原来是没有(reverse(cdr(reverse 的,,,
因为排序出错。。。以为是因为有了Z座标的原因。。所以去掉他

点评

要是用2012+的话可以试试command-s替换command  详情 回复 发表于 2013-9-12 18:20
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

已领礼包: 1268个

财富等级: 财源广进

发表于 2013-9-12 18:20:17 来自手机 | 显示全部楼层
ysq101 发表于 2013-9-12 18:16
原来是没有(reverse(cdr(reverse 的,,,
因为排序出错。。。以为是因为有了Z座标的原因。。所以去掉他 ...

要是用2012+的话可以试试command-s替换command

点评

模具专业一起在用2004,没考虑过新版本  详情 回复 发表于 2013-9-12 20:14
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

已领礼包: 40个

财富等级: 招财进宝

发表于 2013-9-12 18:32:18 | 显示全部楼层
要想提升,大量的运算,一定不要用COMMAND

矩阵不难啊,你可以照猫画虎啊,主要是理解。不清楚的可以发帖问,一定要对自己严要求,过去了回头看,一切都是那么容易。

点评

newer难道就只能将就用啦????指定一二吧  详情 回复 发表于 2013-9-12 20:18
文化是我们硬伤啊~~~~小学毕业,几何几乎靠自学。。。想摆脱COMMAND看来是难上加难了  详情 回复 发表于 2013-9-12 20:16
照猫画虎不一定容易,也需要积淀,不说代码(没细看),先要把猫看懂懂  详情 回复 发表于 2013-9-12 19:41
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

发表于 2013-9-12 19:41:49 | 显示全部楼层
newer 发表于 2013-9-12 18:32
要想提升,大量的运算,一定不要用COMMAND

矩阵不难啊,你可以照猫画虎啊,主要是理解。不清楚的可以发 ...

照猫画虎不一定容易,也需要积淀,不说代码(没细看{:soso_e110:}),先要把猫看懂懂{:soso_e100:}

点评

大师~~~~~~关于这个LISP可以 以面积来排序吗??从小到大或相反都可以  详情 回复 发表于 2013-10-18 13:35
问题是我连猫都看不懂  详情 回复 发表于 2013-9-12 20:21
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

已领礼包: 685个

财富等级: 财运亨通

 楼主| 发表于 2013-9-12 20:14:22 | 显示全部楼层
st788796 发表于 2013-9-12 18:20
要是用2012+的话可以试试command-s替换command

模具专业一起在用2004,没考虑过新版本   
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

已领礼包: 685个

财富等级: 财运亨通

 楼主| 发表于 2013-9-12 20:16:18 | 显示全部楼层
newer 发表于 2013-9-12 18:32
要想提升,大量的运算,一定不要用COMMAND

矩阵不难啊,你可以照猫画虎啊,主要是理解。不清楚的可以发 ...

文化是我们硬伤啊~~~~小学毕业,几何几乎靠自学。。。想摆脱COMMAND看来是难上加难了
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

已领礼包: 685个

财富等级: 财运亨通

 楼主| 发表于 2013-9-12 20:18:46 | 显示全部楼层
newer 发表于 2013-9-12 18:32
要想提升,大量的运算,一定不要用COMMAND

矩阵不难啊,你可以照猫画虎啊,主要是理解。不清楚的可以发 ...

newer难道就只能将就用啦????指定一二吧

点评

在那个帖子里面,我都把程序给你写完了,建议也给你了,要想快,用矩阵变换,你在仔细看看那个程序,就简单的20来行代码,照猫画虎写出来。 关于矩阵的,你要有问题,你就发帖问。  详情 回复 发表于 2013-9-12 20:56
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

已领礼包: 685个

财富等级: 财运亨通

 楼主| 发表于 2013-9-12 20:21:25 | 显示全部楼层
Free-Lancer 发表于 2013-9-12 19:41
照猫画虎不一定容易,也需要积淀,不说代码(没细看),先要把猫看懂懂

问题是我连猫都看不懂
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

已领礼包: 40个

财富等级: 招财进宝

发表于 2013-9-12 20:56:37 | 显示全部楼层
ysq101 发表于 2013-9-12 20:18
newer难道就只能将就用啦????指定一二吧

在那个帖子里面,我都把程序给你写完了,建议也给你了,要想快,用矩阵变换,你在仔细看看那个程序,就简单的20来行代码,照猫画虎写出来。
关于矩阵的,你要有问题,你就发帖问。

点评

NEWER版主~~~~~~请问关于这个LISP可以 以面积来排序 吗??从小到大或相反都可以 选择集都是按图元生成的顺序来排列的 有什么方法吗?  详情 回复 发表于 2013-10-18 13:36
..慢慢来吧...先学好COMMAND先  详情 回复 发表于 2013-9-13 00:02
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-4-28 08:12 , Processed in 0.437990 second(s), 57 queries , Gzip On.

Powered by Discuz! X3.5

© 2001-2024 Discuz! Team.

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