明经CAD社区

 找回密码
 注册

QQ登录

只需一步,快速开始

搜索
查看: 2271|回复: 9

贴一个例程,选择集合并,兼问一个问题

[复制链接]
发表于 2002-9-8 23:24:00 | 显示全部楼层 |阅读模式

  1. (defun ssunion (sslist)
  2.   (mapcar '(lambda (x / c)
  3.              (setq c -1)
  4.              (repeat (sslength x)
  5.                (ssadd (ssname x (++ 'c)) (car sslist))
  6.              )
  7.            )
  8.           (cdr sslist)
  9.   )
  10.   (sslength (car sslist))
  11. )

上述程序来自acadx.com
可能是贴程序的人粗心了, 没有给出++的实现方法。
我试着写一下:


  1. (defun ++ ( x ) (set x (+ 1 (eval x))))


不对。各位能不能改一下,告诉我错在哪里。
"觉得好,就打赏"
还没有人打赏,支持一下
 楼主| 发表于 2002-9-8 23:26:00 | 显示全部楼层

注意到明经同志在主页上提供了这个例程,但也没给出实现

 楼主| 发表于 2002-9-8 23:41:00 | 显示全部楼层

哦,我写的是对的。刚才糊涂了

Command: (defun ++ ( x ) (set x (+ 1 (eval x))))
++

Command: (setq c 1)
1

Command: (++ 'c)
2

Command: !c
2

一开始用(setq x 1)来测试,试不出来。可能是变量名冲突。
发表于 2002-9-9 08:35:00 | 显示全部楼层

(++ -1) 时程序错误

 楼主| 发表于 2002-9-9 10:30:00 | 显示全部楼层

这个不是这么用的。++函数的参数只能是符号名。

本帖最后由 作者 于 2002-9-9 10:30:27 编辑

由于涉及到符号名,所以对参数有要求。 


  1. (defun ++ (_++_AutoIncSymbol)
  2.   (set _++_AutoIncSymbol (+ 1 (eval _++_AutoIncSymbol)))
  3. )


这个函数其实是等价于
(++ 'c) <==> (setq c (1+ c)) <==> (set 'c (1+ c))
因为你不能用
(setq -1 (1+ -1))
所以
(++ -1)
也不对。

[此贴子已经被作者于2002-9-9 10:26:52编辑过]
发表于 2002-9-9 11:05:00 | 显示全部楼层

那种选集合并会比较高效率??

(defun UNION (A B /)
  (command "_.select" A B "")
  (setq A (ssget "p"))
)
(defun SUBTRACT        (A B /)
  (command "_.select" A "r" B "")
  (setq A (ssget "p"))
)
(defun INTERSECT (A B / C)
  (command "_.select" A "r" B "")
  (setq C (ssget "p"))
  (command "_.select" A "r" C "")
  (setq A (ssget "p"))
)
 楼主| 发表于 2002-9-9 11:20:00 | 显示全部楼层

你的方法是不错的。这个函数在“实用函数”有下载。但可能不是效率的问题,你的方法

本帖最后由 作者 于 2002-9-9 11:20:27 编辑

你的方法是不错的。这个函数在“实用函数”有下载。但可能不是效率的问题,你的方法有一定的局限。见内[br]使用你的函数不能编写lisp透明命令。
不能在一个commmand系列中执行。
比如,
(command "_.pline")
(foreach pt plist1 (command pt))
...
(union ss1 ss2)
...
(foreach pt plist2 (command pt))
....
(command "") ; 退出pline命令。
发表于 2002-9-9 11:57:00 | 显示全部楼层

commmand系列执行中是不能用其它commmand命令这个我了解

发表于 2002-9-9 13:23:00 | 显示全部楼层

这种函数有什么用途呢?

 楼主| 发表于 2002-9-9 13:49:00 | 显示全部楼层

没什么大用。加深一下对符号的理解。

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

本版积分规则

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

GMT+8, 2024-11-25 17:25 , Processed in 0.187619 second(s), 26 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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