明经CAD社区

 找回密码
 注册

QQ登录

只需一步,快速开始

搜索
查看: 14149|回复: 35

[源码] [lostbalance]我的通用函数库wyb-函数

    [复制链接]
发表于 2018-9-2 10:41 | 显示全部楼层 |阅读模式
本帖最后由 lostbalance 于 2021-8-2 17:27 编辑

个人在用的函数库,部分自己编的,部分抄袭、借鉴明经或网上大神的。论坛中我发布的程序,需要的源码可以在这里找找。

(说明下,关于函数名wyb,仅是为了便于个人编程查找引用方便,在函数版次中注明了原作者,如有问题请联系我。)


首先是预定义的几个全局参数。
论坛的代码模块好像有点问题,显示不正常,我占个二楼放吧。

目录
  1. (wyb-get-box ename)//4.2. 取得图元外矩形框
  2. (wyb-get-mBox ss)//4.2.2 取得选择集内不重叠的外矩形框
  3. (wyb-sort-lst lst key fuzz func)//4.4. 列表排序基础函数(方向判断)
  4. (wyb-sort-ssPts sspts key fuzz)//4.4.1 图元排序
  5. (wyb-sort-pts pts dir xyz fuzz)//4.4.2 点列表排序
  6. (wyb-get-entDxf dxf ent)//4.11. 获取对象dxf码
  7. (wyb-lst-position a lst)//4.18. a在表lst中的位置 or nil
  8. (wyb-sublst lst start len)//4.21. 提取列表的一部分,类似substr(迭代法)
  9. (wyb-substNth new n lst)//4.22. 替换列表中指定位置的项
  10. (wyb-file-getFolder msg)//4.38. 获取文件夹
  11. (wyb-getDesktop)//4.48. 获取桌面desktop的路径
  12. (wyb-subst ent dxf new_item)//6.5 替换新旧列表后的列表
  13. (wyb-findSupportFolder folder)//9.24. 在支持目录中查找文件夹路径
  14. (wyb-get-lastEnt ent)//3.17. 获取ent之后的所有对象
  15. (wyb-substMod ent dxf new_item)//5.10.1 替换并更新新旧列表后的列表
  16. (wyb-subst ent dxf new_item)//5.10. 替换新旧列表后的列表
  17. (wyb-name obj)//9.6. 对象名称
  18. (wyb-listCollectionMemberNames collection)//9.11. 返回集合成员名称列表
  19. (wyb-listLayers)//9.13. 返回层集合成员名称列表
复制代码


20181214 补充wyb-if类的函数,见本贴13楼
20181217 增加wyb-findSupportFolder
                 PS,生命在于折腾,前阵子整理了一下函数库,重新分类梳理了编号,有极个别函数的名称也调整了下,有问题请留言
20190530 补充wyb-subst v1.0,wyb-substMod v1.0,wyb-get-lastEnt v1.0
20191216 补充wyb-name v1.0, wyb-listCollectionMemberNames v1.0, wyb-listLayers v1.020200916 补充wyb-lst-insertNth v1.0
20210802 补充wyb-sort-str v1.0


本帖子中包含更多资源

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

x

评分

参与人数 8明经币 +6 金钱 +12 收起 理由
tigcat + 1 很给力!
孤人旧梦 + 6 很给力!
水吉空 + 6 很给力!
Bao_lai + 1 赞一个!
xshrimp + 1 很给力!
BaoWSE + 1 赞一个!
pannelchen + 1 赞一个!
USER2128 + 1 赞一个!

查看全部评分

"觉得好,就打赏"
还没有人打赏,支持一下

本帖被以下淘专辑推荐:

 楼主| 发表于 2018-9-2 10:46 | 显示全部楼层
;|=====WYB函数库=====
--------------------------------------------------------------------------------
本函数库的源码,有部分源自明经论坛、晓东论坛等处
由于各种原因,导致部分源码的作者信息不完整或丢失,深感歉意
感谢自贡黄明儒、highflybir、llsheng-73、edata、不死猫等明经er和leemac等
--------------------------------------------------------------------------------
====================|;
(vl-load-com)
;===0. 常数
(setq ;;常用VLA对象、集合
    0.5pi   (* 0.5 pi)
    1.5pi   (* 1.5 pi)
    2pi     (+ pi pi)
    *ACAD*  (vlax-get-acad-object) ;;AutoCAD任务中的顶层 AutoCAD应用程序对象,即获取AutoCAD程序本身
    *DOC*   (vla-get-ActiveDocument *ACAD*) ;;是在autocad程序下面运行的当前文档对象
    *LOUT*  (vla-get-ActiveLayout *DOC*) ;;激活的布局
    *DOCS*  (vla-get-Documents *ACAD*)
    *MS*    (vla-get-modelSpace *DOC*)
    *PS*    (vla-get-paperSpace *DOC*)
    *BLKS*  (vla-get-Blocks *DOC*)
    *LAYS*  (vla-get-Layers *DOC*)
    *LTS*   (vla-get-Linetypes *DOC*)
    *TSS*   (vla-get-TextStyles *DOC*)
    *GRPS*  (vla-get-groups *DOC*)
    *DIMS*  (vla-get-DimStyles *DOC*)
    *LOUTS* (vla-get-Layouts *DOC*)
    *VPS*   (vla-get-Viewports *DOC*)
    *VS*    (vla-get-Views *DOC*)
    *DICS*  (vla-get-Dictionaries *DOC*)
    *PLTCS* (vla-get-PlotConfigurations *DOC*)
    *RAPPS* (vla-get-RegisteredApplications *DOC*)
    ;;常用的几个外部接口对象
    *FSO*   (vlax-get-or-create-object "Scripting.FileSystemObject")
    *WSH*   (vlax-get-or-create-object "wscript.shell")
    *SHELL* (vlax-get-or-create-object "Shell.Application")
    *SCR*   (vlax-get-or-create-object "ScriptControl")
    *WBEM*  (vlax-get-or-create-object "WbemScripting.SWbemLocator")
    *VBS*   (vlax-get-or-create-object "VBScript.regexp")
    *HTMLF* (vlax-get-or-create-object "htmlfile")
    ;;全局参数
    *wyb_ini* "WYB-Tools.ini"
)
回复 支持 2 反对 2

使用道具 举报

发表于 2018-9-4 19:41 | 显示全部楼层
如能合并就方便了
你真好
回复 支持 2 反对 1

使用道具 举报

 楼主| 发表于 2018-12-14 20:32 | 显示全部楼层
补充wyb-if类的函数。
都算是比较简单和通用的函数,就不挂附件了,直接贴出来。
  1. ;|= 3.5. 判断是否val对象
  2. @== (wyb-if-vlaObject obj)
  3. #== return: t / nil
  4. ====================|;
  5. (defun wyb-if-vlaObject (@obj)
  6.     (equal (type @obj) 'vla-object)
  7. )
  8. ;|= 3.6. 判断是否字符串
  9. @== (wyb-if-string x)
  10. #== return: t / nil
  11. ====================|;
  12. (defun wyb-if-string (@x)
  13.     (equal (type @x) 'str)
  14. )
  15. ;|= 3.7. 判断是否实数
  16. @== (wyb-if-real x)
  17. #== return: t / nil
  18. ====================|;
  19. (defun wyb-if-real (@x)
  20.     (equal (type @x) 'real)
  21. )
  22. ;|= 3.8. 判断是否ename对象
  23. @== (wyb-if-ename x)
  24. #== return: t / nil
  25. ====================|;
  26. (defun wyb-if-ename (@x)
  27.     (equal (type @x) 'ename)
  28. )
  29. ;|= 3.9. 判断是否变体
  30. @== (wyb-if-variant x)
  31. #== return: t / nil
  32. ====================|;
  33. (defun wyb-if-variant (@x)
  34.     (equal (type @x) 'variant)
  35. )
  36. ;|= 3.10. 判断是否是选择集且长度不为0
  37. @== (wyb-if-ssp ss)
  38. #== return: t / nil
  39. ====================|;
  40. (defun wyb-if-ssp (@ss)
  41.     (and (= (type @ss) 'PICKSET) (> (sslength @ss) 0))
  42. )
  43. ;|= 3.11. 判断是否为点对表
  44. @== (wyb-if-consp lst)
  45. #== return: t / nil
  46. ====================|;
  47. (defun wyb-if-consp (@lst)
  48.     (and (vl-consp @lst)(not (vl-list-length @lst)))
  49. )
  50. ;|= 3.12. 判断是否为整数
  51. @== (wyb-if-int x)
  52. #== return: t / nil
  53. ====================|;
  54. (defun wyb-if-int (@x)
  55.     (= (type @x) 'INT)
  56. )
  57. ;|= 3.13. 判断是否为整数或整实数
  58. @== (wyb-if-int2 x)
  59. #== return: t / nil
  60. ====================|;
  61. (defun wyb-if-int2 (@x)
  62.     (= (fix @x) @x)
  63. )
  64. ;|= 3.14. 判断字符串首字符是否中文字符
  65. @== (wyb-if-chiCh str)
  66. #== return: T / nil
  67. par:
  68. sample:
  69.     (wyb-if-chiCh "好")  ;;return: T
  70.     (wyb-if-chiCh "1")   ;;return: nil
  71. ver:
  72.     [1.0] by woyb 20170425
  73. ====================|;
  74. (defun wyb-if-chiCh (@str)
  75.     (> (ascii (substr @str 1 1)) 127)
  76. )



回复 支持 2 反对 0

使用道具 举报

发表于 2018-9-4 21:51 | 显示全部楼层
悟性不达标,先收藏之有时间再慢慢琢磨参悟!
回复 支持 2 反对 0

使用道具 举报

发表于 2018-9-4 17:07 | 显示全部楼层
dear sir

wow its amazing

thanks for sharing
回复 支持 1 反对 1

使用道具 举报

发表于 2018-9-4 11:51 | 显示全部楼层
如能合并就方便了
你真好
回复 支持 2 反对 0

使用道具 举报

发表于 2018-9-4 10:12 | 显示全部楼层
收藏以后学习用.
回复 支持 2 反对 0

使用道具 举报

发表于 2018-9-2 17:16 | 显示全部楼层
感谢分享学习!!!!!
回复 支持 2 反对 0

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-4-25 05:28 , Processed in 0.438059 second(s), 30 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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