lostbalance 发表于 2018-9-2 10:41:59

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

本帖最后由 lostbalance 于 2021-8-2 17:27 编辑

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

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

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

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

20181214 补充wyb-if类的函数,见本贴13楼
20181217 增加wyb-findSupportFolder
               PS,生命在于折腾,前阵子整理了一下函数库,重新分类梳理了编号,有极个别函数的名称也调整了下,有问题请留言:lol
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


lostbalance 发表于 2018-9-2 10:46:34

;|=====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"
)

xiewu 发表于 2018-9-4 19:41:13

如能合并就方便了
你真好

lostbalance 发表于 2018-12-14 20:32:40

补充wyb-if类的函数。
都算是比较简单和通用的函数,就不挂附件了,直接贴出来。
;|= 3.5. 判断是否val对象
@== (wyb-if-vlaObject obj)
#== return: t / nil
====================|;
(defun wyb-if-vlaObject (@obj)
    (equal (type @obj) 'vla-object)
)
;|= 3.6. 判断是否字符串
@== (wyb-if-string x)
#== return: t / nil
====================|;
(defun wyb-if-string (@x)
    (equal (type @x) 'str)
)
;|= 3.7. 判断是否实数
@== (wyb-if-real x)
#== return: t / nil
====================|;
(defun wyb-if-real (@x)
    (equal (type @x) 'real)
)
;|= 3.8. 判断是否ename对象
@== (wyb-if-ename x)
#== return: t / nil
====================|;
(defun wyb-if-ename (@x)
    (equal (type @x) 'ename)
)
;|= 3.9. 判断是否变体
@== (wyb-if-variant x)
#== return: t / nil
====================|;
(defun wyb-if-variant (@x)
    (equal (type @x) 'variant)
)
;|= 3.10. 判断是否是选择集且长度不为0
@== (wyb-if-ssp ss)
#== return: t / nil
====================|;
(defun wyb-if-ssp (@ss)
    (and (= (type @ss) 'PICKSET) (> (sslength @ss) 0))
)
;|= 3.11. 判断是否为点对表
@== (wyb-if-consp lst)
#== return: t / nil
====================|;
(defun wyb-if-consp (@lst)
    (and (vl-consp @lst)(not (vl-list-length @lst)))
)
;|= 3.12. 判断是否为整数
@== (wyb-if-int x)
#== return: t / nil
====================|;
(defun wyb-if-int (@x)
    (= (type @x) 'INT)
)
;|= 3.13. 判断是否为整数或整实数
@== (wyb-if-int2 x)
#== return: t / nil
====================|;
(defun wyb-if-int2 (@x)
    (= (fix @x) @x)
)
;|= 3.14. 判断字符串首字符是否中文字符
@== (wyb-if-chiCh str)
#== return: T / nil
par:
sample:
    (wyb-if-chiCh "好");;return: T
    (wyb-if-chiCh "1")   ;;return: nil
ver:
    by woyb 20170425
====================|;
(defun wyb-if-chiCh (@str)
    (> (ascii (substr @str 1 1)) 127)
)


BaoWSE 发表于 2018-9-4 21:51:58

悟性不达标,先收藏之有时间再慢慢琢磨参悟!

sachindkini 发表于 2018-9-4 17:07:57

dear sir

wow its amazing

thanks for sharing

ynhh 发表于 2018-9-4 11:51:56

如能合并就方便了
你真好

pannelchen 发表于 2018-9-4 10:12:01

收藏以后学习用.

yoyoho 发表于 2018-9-2 17:16:00

感谢分享学习!!!!!

vlisp2012 发表于 2018-9-3 11:05:20

THX A LOT!!!!!!!!!

479274135 发表于 2018-9-4 08:16:30

感谢分享.....
页: [1] 2 3 4
查看完整版本: [lostbalance]我的通用函数库wyb-函数