乐筑天下

搜索
欢迎各位开发者和用户入驻本平台 尊重版权,从我做起,拒绝盗版,拒绝倒卖 签到、发布资源、邀请好友注册,可以获得银币 请注意保管好自己的密码,避免账户资金被盗
查看: 95|回复: 4

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

[复制链接]

37

主题

297

帖子

15

银币

后起之秀

Rank: 20Rank: 20Rank: 20Rank: 20

铜币
449
发表于 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))))


不对。各位能不能改一下,告诉我错在哪里。
回复

使用道具 举报

37

主题

297

帖子

15

银币

后起之秀

Rank: 20Rank: 20Rank: 20Rank: 20

铜币
449
发表于 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)来测试,试不出来。可能是变量名冲突。
回复

使用道具 举报

37

主题

297

帖子

15

银币

后起之秀

Rank: 20Rank: 20Rank: 20Rank: 20

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

由于涉及到符号名,所以对参数有要求。 
  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编辑过]
回复

使用道具 举报

29

主题

1152

帖子

10

银币

顶梁支柱

Rank: 50Rank: 50

铜币
1268
发表于 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"))
)
回复

使用道具 举报

37

主题

297

帖子

15

银币

后起之秀

Rank: 20Rank: 20Rank: 20Rank: 20

铜币
449
发表于 2002-9-9 11:20:00 | 显示全部楼层

你的方法是不错的。这个函数在“实用函数”有下载。但可能不是效率的问题,你的方法有一定的局限。见内[br]使用你的函数不能编写lisp透明命令。
不能在一个commmand系列中执行。
比如,
(command "_.pline")
(foreach pt plist1 (command pt))
...
(union ss1 ss2)
...
(foreach pt plist2 (command pt))
....
(command "") ; 退出pline命令。
回复

使用道具 举报

发表回复

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

本版积分规则

  • 微信公众平台

  • 扫描访问手机版

  • 点击图片下载手机App

QQ|关于我们|小黑屋|乐筑天下 繁体中文

GMT+8, 2025-5-25 20:42 , Processed in 0.317407 second(s), 62 queries .

© 2020-2025 乐筑天下

联系客服 关注微信 帮助中心 下载APP 返回顶部 返回列表