找回密码
 立即注册

QQ登录

只需一步,快速开始

扫一扫,访问微社区

查看: 520|回复: 11

[原创] CSSOFT函数包介绍

[复制链接]
发表于 2021-10-14 15:56:43 | 显示全部楼层 |阅读模式

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

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

×
本帖最后由 lijiao 于 2021-10-14 16:02 编辑

近日学习.net,写了个CSSOFT函数包,附件中是一个CSSOFT.DLL文件.
这个函数包对ACAD的版本要求应该比较宽松,ACAD2013以上的估计都能用.
使用方法很简单,先把CSSOFT.DLL放在搜索路径中,然后用netload命令加载CSSOFT.DLL.
-----------------------------------------------------------------------------------------
今天说第一个函数:
函数名:nsget
调用格式:(nsget [msg] [filter]) 当然也可以是(nsget [filter] [msg])
功能:相当于ssget的部分功能,可以带关键字,使用关键字之前不用初始化
参数说明:msg的类型为字符串,表示提示信息,如果需要带关键字,需要按下面的格式进行书写
               示例:"选择实体[开门(K)/关门(N)]<退出>",需要注意的是,W/L/C/BOX/ALL/F/WP)/CP)/G/A/R/M/P)/U/AU/SI等是系统保留关键字,请不要重复
              filter是过滤器,和SSGET的过滤器一样
返回值:成功,返回选择集,选择关键字(系统保留关键字除外),返回字符串,失败,返回nil
使用举例:
  1. (nsget)
  2. (nsget "选择实体")
  3. (nsget "选择实体[开门(K)/关门(N)]<退出>")
  4. (nsget "选择实体[开门(K)/关门(N)]<退出>" '((0 . "line") (8 . "0")))
  5. (nsget '((0 . "line") (8 . "0")) "选择实体[开门(K)/关门(N)]<退出>")
复制代码
-----------------------------------------------------------------------------------------
其他函数过两天再说





CSSOFT.zip

18.08 KB, 下载次数: 11, 下载积分: D豆 -1 , 活跃度 1

售价: 2 D豆  [记录]

首次发布

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

已领礼包: 8611个

财富等级: 富甲天下

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

使用道具 举报

 楼主| 发表于 2021-10-15 10:19:24 | 显示全部楼层
本帖最后由 lijiao 于 2021-10-15 10:28 编辑

今天说第二个函数:
函数名:ssdrag
调用格式:(ssdrag [mode] [ss] [pt] [ref] [msg])
功能:拖动选择集,可以带关键字,使用关键字之前不用初始化
参数说明:
  1. mode为整数,取值为0时,表示移动方式
  2.                   取值为1时,表示旋转方式
  3.                   取值为2时,表示缩放方式
  4.                   取值为3时,表示镜像方式
  5.                   不提供时,默认为0
  6. ss为选择集,不提供时会提示选择实体
  7. pt为拖动基准点,不提供时会提示输入基准点
  8. ref为实数,mode为1时表示参考角度(弧度)
  9.               mode为2时表示参考缩放值
  10.               mode为1和3时会忽略该值
  11. msg为字符串,表示提示信息,如果需要带关键字,需要按下面的格式进行书写
  12. 示例:"目标点[开门(K)/关门(N)]<退出>"
复制代码
  1. 返回值:成功,mode为0时返回点
  2.                   mode为1时返回角度(弧度)
  3.                   mode为2时返回缩放值(距离)
  4.                   mode为3时返回镜像线的角度(弧度)
  5.            选择关键字返回字符串
  6.            失败,返回nil
复制代码

使用举例:
  1. (defun c:mmove ( / BIAOJI ISCOPY JUZHEN MODE PT0 PT1 REA RES SS SSOBJ X)
  2.   (if (and (setq ss (nsget)) (setq pt0 (getpoint "\r基点:")))
  3.     (progn
  4.       (setq ssobj (tovb ss) biaoji t iscopy nil mode 0 rea 0.0 res 1.0)
  5.       (while biaoji
  6.   (cond
  7.     ((= mode 0)
  8.      (if iscopy
  9.        (setq pt1 (ssdrag 0 ss pt0 "【复制移动】 [复制(N)/基点(B)/旋转(RO)/缩放(S)/镜像(MI)/完成(O)]目标点<完成>"))
  10.        (setq pt1 (ssdrag 0 ss pt0 "【移动】 [复制(Y)/基点(B)/旋转(RO)/缩放(S)/镜像(MI)/完成(O)]目标点<完成>"))
  11.        )
  12.      )
  13.     ((= mode 1)
  14.      (setq pt1 (ssdrag 1 ss pt0 rea "【旋转】 [基点(B)/参考(RE)/缩放(S)/镜像(MI)/完成(O)]旋转角度<完成>"))
  15.      )
  16.     ((= mode 2)
  17.      (setq pt1 (ssdrag 2 ss pt0 res "【缩放】 [基点(B)/参考(RE)/旋转(RO)/镜像(MI)/完成(O)]缩放值<完成>"))
  18.      )
  19.     ((= mode 3)
  20.      (setq pt1 (ssdrag 3 ss pt0 "【镜像】 [基点(B)/旋转(RO)/缩放(S)/完成(O)]镜像线<完成>"))
  21.       )
  22.     )
  23.   (cond
  24.     ((= pt1 "Y") (setq iscopy t))
  25.     ((= pt1 "N") (setq iscopy nil))
  26.     ((= pt1 "B") (if (setq pt1 (getpoint "\r基点:")) (setq pt0 pt1)))
  27.     ((= pt1 "RE") (if (= mode 1)
  28.         (if (setq pt1 (getangle pt0 (STRCAT "\r参考角度<" (rtos (rtod rea)) ">:"))) (setq rea pt1))
  29.         (if (setq pt1 (getdist pt0 (STRCAT "\r参考缩放值<" (rtos res) ">:"))) (setq res pt1))
  30.         )
  31.      )
  32.     ((= pt1 "MO") (setq mode 0))
  33.     ((= pt1 "RO") (setq mode 1))
  34.     ((= pt1 "S") (setq mode 2))
  35.     ((= pt1 "MI") (setq mode 3))
  36.     ((= pt1 "O")
  37.      (if (= mode 0)
  38.          (setq biaoji nil)
  39.          (setq mode 0)
  40.          )
  41.     )
  42.     ((member (type pt1) '(list real int))
  43.      (cond
  44.        ((= (type pt1) 'list) (setq juzhen (cs-juzhen (list 'mov pt0 pt1))))
  45.        ((= mode 1) (setq juzhen (cs-juzhen (list 'rot pt0 (- pt1 rea)))))
  46.        ((= mode 2) (setq juzhen (cs-juzhen (list 'sca pt0 (/ pt1 res)))))
  47.        ((= mode 3) (setq juzhen (cs-juzhen (list 'mir pt0 (polar pt0 pt1 10)))))
  48.        )
  49.      (if (= mode 0)
  50.        (if iscopy
  51.          (mapcar '(lambda  (x)
  52.         (cs-juzhen (list 'yin (vla-copy x) juzhen))
  53.       )
  54.            ssobj
  55.          )
  56.          (progn
  57.      (mapcar '(lambda (x)
  58.           (cs-juzhen (list 'yin x juzhen))
  59.           (vla-update x)
  60.         )
  61.        ssobj
  62.      )
  63.      (setq pt0 pt1)
  64.          )
  65.        )
  66.      (progn
  67.        (mapcar '(lambda(x)
  68.         (cs-juzhen (list 'yin x juzhen))
  69.         (vla-update x)
  70.         )
  71.            ssobj)
  72.          (setq mode 0)
  73.          )
  74.        )
  75.      )
  76.     (t (if (= mode 0)
  77.          (setq biaoji nil)
  78.          (setq mode 0)
  79.          )
  80.     )
  81.   )
  82.       )
  83.     )
  84.     )
  85.   (princ)
  86.   )
其中有几个函数tovb,功能是把选择集中的每个图元转换成vla-object类型,并形成一个列表;rtod是将弧度转换为角度;Cs-juzhen可以参照论坛中关于矩阵的介绍编写
-----------------------------------------------------------------------------------------
其他函数过两天再说



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

使用道具 举报

已领礼包: 1个

财富等级: 恭喜发财

发表于 2021-10-16 09:55:45 | 显示全部楼层
希望作者推出完整的函数系列。
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

已领礼包: 1个

财富等级: 恭喜发财

发表于 2021-10-16 09:59:14 | 显示全部楼层
这个函的功能好强大呀!
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

 楼主| 发表于 2021-10-18 10:32:10 | 显示全部楼层
本帖最后由 lijiao 于 2021-10-18 10:35 编辑

今天说第三个函数:
函数名:csg
调用格式:(csg [mode] [pt] [msg])
功能:数据输入,可以带关键字,使用关键字之前不用初始化
参数说明:
  1. mode为字符串,取值为"A"时,相当于getangle
  2.                   取值为"C"时,相当于getcorner
  3.                   取值为"D"时,相当于getdist
  4.                   取值为"E"时,相当于entsel
  5.                   取值为"I"时,相当于getint
  6.                   取值为"K"时,相当于getkword
  7.                   取值为"P"时,相当于getpoint
  8.                   取值为"R"时,相当于getreal
  9.                   取值为"S"时,相当于string(一般不带关键字)
  10. pt为基准点,mode为"E"/"I"/"K"/"R"/"S"时会自动忽略
  11. msg为字符串,表示提示信息,如果需要带关键字,需要按下面的格式进行书写
  12. 示例:"目标点[开门(K)/关门(N)]<退出>"
  13. 除mode外,其他参数不分先后
复制代码
返回值:和get类函数/ENTSEL函数一致
-----------------------------------------------------------------------------------------
其他函数过两天再说



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

使用道具 举报

已领礼包: 8611个

财富等级: 富甲天下

发表于 2021-10-18 20:30:41 | 显示全部楼层
这个函数意义如果仅是为了减少一点书写字符数量就有点鸡肋了,能不能再增加默认值的选项
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

已领礼包: 1338个

财富等级: 财源广进

发表于 2021-10-18 21:14:06 | 显示全部楼层
感谢分享好的函数包,拓展了相关函数的功能。
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

 楼主| 发表于 2021-10-19 14:55:11 | 显示全部楼层
今天说第四个函数:
函数名:csBalloon
调用格式:(csBalloon[msg] ...)或(csBalloon '(msg ...))
功能:托盘气泡
参数说明:msg为字符串
返回值:T
说明:(csBalloon[msg] ...)或(csBalloon '(msg ...)),显示托盘气泡
       (csBalloon),关闭托盘气泡
       点击托盘气泡右上角的叉可以手动关闭托盘气泡
       执行任意命令,会自动关闭托盘气泡
-----------------------------------------------------------------------------------------
其他函数过两天再说

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

使用道具 举报

 楼主| 发表于 2021-10-20 09:44:34 | 显示全部楼层
今天说第五个函数:
函数名:csmouse
调用格式:(CSMOUSE t)或(csmouse)
功能:鼠标悬停提示
返回值:无
说明:(csmouse t)开启鼠标悬停提示
       (csmouse),关闭鼠标系统提示
       这是一个休闲娱乐的函数,使用前需要将附件中的两个txt文件放在系统的搜索路径中,功能开启后,没有使用命令时,鼠标悬停随机显示唐诗;有活动命令时会随机显示对联或歇后语.
--------------------------------------------------------------------------------
函数介绍完了

tangshi.txt

85.07 KB, 下载次数: 1, 下载积分: D豆 -1 , 活跃度 1

duilian.txt

194.95 KB, 下载次数: 1, 下载积分: D豆 -1 , 活跃度 1

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

使用道具 举报

已领礼包: 8611个

财富等级: 富甲天下

发表于 2021-11-13 16:04:34 | 显示全部楼层
发现一个小bug:ssdrag对组有问题,提示“Error: Automation 错误。 不适用AutoCAD”
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

发表于 2021-11-16 17:26:39 | 显示全部楼层
感谢共享函数包!
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-6-16 09:07 , Processed in 0.412118 second(s), 58 queries , Gzip On.

Powered by Discuz! X3.5

© 2001-2024 Discuz! Team.

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