找回密码
 立即注册

QQ登录

只需一步,快速开始

扫一扫,访问微社区

查看: 836|回复: 7

[他山之石] 几个函数

[复制链接]

已领礼包: 264个

财富等级: 日进斗金

发表于 2016-12-13 10:07:50 | 显示全部楼层 |阅读模式

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

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

×


  1. (defun jk:ACX_ActDoc ()
  2.   (if
  3.     (not *jk-ActDoc)
  4.     (setq *jk-ActDoc (vla-get-activedocument (vlax-get-acad-object)))
  5.     *jk-ActDoc
  6.   )
  7. )
  8. (defun jk:ACX_GetModel ()
  9.   (if
  10.     (not *jk-Model)
  11.     (setq *jk-Model (vla-get-modelspace (jk:ACX_ActDoc)))
  12.     *jk-Model
  13.   )
  14. )
  15. (defun jk:ACX_GetActiveSpace ()
  16.   (if
  17.     (= 1 (getvar "TILEMODE"))
  18.     (jk:ACX_GetModel)
  19.     (if
  20.       (= 2 (getvar "CVPORT"))
  21.       (jk:ACX_GetModel)
  22.       (vla-item (jk:ACX_GetBlocks) "*Paper_Space")
  23.     )
  24.   )
  25. )
  26. (defun jk:ACX_GetBlocks ()
  27.   (if
  28.     (not *jk-Blocks)
  29.     (setq *jk-Blocks (vla-get-Blocks (jk:ACX_ActDoc)))
  30.     *jk-Blocks
  31.   )
  32. )
  33. (defun jk:ACX_ChangeObj (Obj Lay Col LTp LTs LTw)
  34.   (setq Obj (jk:CON_VlaObject Obj))
  35.   (if
  36.     (vlax-write-enabled-p Obj)
  37.     (progn
  38.       (if
  39.         (and Lay (= (type Lay) 'STR))
  40.         (if
  41.           (not (jk:TBL_LayIsLocked Lay))
  42.           (vla-put-layer Obj Lay)
  43.         )
  44.       )
  45.       (if
  46.         (and Col (= (type Col) 'INT))
  47.         (if
  48.           (and (>= Col 0)(<= Col 256))
  49.           (vla-put-color Obj Col)
  50.         )
  51.       )
  52.       (if
  53.         (and LTp (= (type LTp) 'STR))
  54.         (if
  55.           (jk:TBL_isLtp LTp)
  56.           (vla-put-linetype Obj LTp)
  57.         )
  58.       )
  59.       (if
  60.         (and LTs (numberp LTs))
  61.         (if
  62.           (< LTs 0.0)
  63.           (vla-put-LinetypeScale Obj LTs)
  64.         )
  65.       )
  66.       (if
  67.         (and LTw (numberp LTw))
  68.         (vla-put-lineweight Obj LTw)
  69.       )
  70.     )
  71.   )
  72. )
  73. (defun jk:ACX_MakeMline
  74.                         (Space        Name   plst   Width  Closed Lay
  75.                          Col        Ltp    Lts    Ltw    /            ary
  76.                          Obj        Mst    Mw
  77.                         )
  78.   (setq        plst (mapcar '(lambda (&) (list (car &) (cadr &) (caddr &)))
  79.                      plst
  80.              )
  81.         Mst  (getvar "CMLSTYLE")
  82.   )
  83.   (setvar "CMLSTYLE" Name)
  84.   (setq        plst (apply 'append plst)
  85.         ary  (vlax-make-safearray
  86.                vlax-vbdouble
  87.                (cons 1 (length plst))
  88.              )
  89.         Obj  (vla-addmline
  90.                Space
  91.                (vlax-make-variant
  92.                  (vlax-safearray-fill ary plst)
  93.                )
  94.              )
  95.   )
  96.   (jk:ACX_ChangeObj Obj Lay Col LTp LTs LTw)
  97.   (setvar "CMLSTYLE" Mst)
  98.   (if Closed
  99.     (progn
  100.       (setq Mw (entget (jk:CON_Ename Obj)))
  101.       (entmod
  102.         (subst (cons 71 (+ 2 (cdr (assoc 71 Mw)))) (assoc 71 Mw) Mw)
  103.       )
  104.     )
  105.   )
  106.   (setq Mw (entget (jk:CON_Ename Obj)))
  107.   (if (numberp Width)
  108.     (entmod (subst (cons 40 Width) (assoc 40 Mw) Mw))
  109.   )
  110.   (vla-put-Coordinates Obj ary)
  111.   Obj
  112. )
  113. (defun jk:ENT_isLocked (e m)
  114.   (if
  115.     (= 4
  116.       (logand
  117.         4
  118.         (jk:DXF 70 (tblsearch "LAYER" (jk:DXF 8 (entget e))))
  119.       )
  120.     )
  121.     (progn
  122.       (if m (princ "\nObiekt na zamkni?tej warstwie. "))
  123.       T
  124.     )
  125.     nil
  126.   )
  127. )
  128. (defun jk:CON_VlaObject (In)
  129.   (cond
  130.     ((= (type In) 'VLA-OBJECT) In)
  131.     ((= (type In) 'ENAME)(vlax-ename->vla-object In))
  132.     (T Nil)
  133.   )
  134. )
  135. (defun jk:CON_Ename (In)
  136.   (cond
  137.     ((= (type In) 'VLA-OBJECT)(vlax-vla-object->ename In))
  138.     ((= (type In) 'ENAME) In)
  139.     (T Nil)
  140.   )
  141. )
  142. ;; by kojacek
  143. ;; Funkcja zwraca list? ?ańcuchów tekstowych dziel?c  argument STR na
  144. ;; pod?ańcuchy. Separatorem ?ańcucha jest znak ",". UWAGA! - argument
  145. ;; [STR] nie mo?e by? ?ańcuchem w którym wyst?puj? separatory jeden
  146. ;; za drugim.

  147. (defun jk:CON_Str->List (Str / inc tmp res)
  148.   (setq inc 0)
  149.   (while
  150.     (/= tmp "")
  151.     (setq tmp
  152.       (menucmd
  153.         (strcat "M=$(index," (itoa inc) ","" Str "")")
  154.       )
  155.       inc (1+ inc)
  156.     )
  157.     (setq res (append (list tmp) res))
  158.   )
  159.   (reverse (cdr res))
  160. )
  161. ;; by kojacek
  162. ;; Zwraca liste ?ańcuchów tekstowych reprezentuj?cych aktualn?
  163. ;; dat? o formacie: MM-rzym Miesi?c DD MM YYYY DzieńTygodnia
  164. ;; Wymaga funkcji jk:CON_Str->List

  165. (defun jk:SYS_TodayList (/ Date Mont)
  166.   (setq Date
  167.     (jk:CON_Str->List
  168.       (menucmd
  169.         (strcat
  170.           "M=$(edtime,$(getvar,date),MONTH"
  171.           "","MO","DD","YYYY","DDDD)"
  172.         )
  173.       )
  174.     )
  175.   )
  176.   (setq Mont
  177.     (menucmd
  178.       (strcat "M=$(index,"
  179.               (itoa (1- (read (nth 1 Date))))
  180.               ","I,II,III,IV,V,VI,VII,VIII,IX,X,XI,XII")"
  181.       )
  182.     )
  183.   )
  184.   (cons Mont Date)
  185. )
  186. ;; by kojacek
  187. ;; Awraca liste ?ańcuchów tekstowych reprezentuj?cych aktualny czas:
  188. ;; Wymaga funkcji jk:CON_Str->List
  189. ;; Zwraca list? formatu: ("HH" "MM" "SS" "MSEC")

  190. (defun jk:SYS_CurTime ()
  191.   (jk:CON_Str->List
  192.     (menucmd
  193.       "M=$(edtime,$(getvar,date),HH","MM","SS","MSEC)"
  194.     )
  195.   )
  196. )

  197. (defun jk:CON_GetvarAsStr (Var)
  198.   (menucmd
  199.     (strcat
  200.       "M=$(getvar,"" Var "")"
  201.     )
  202.   )
  203. )
  204. (defun jk:DXF (Code Lst)
  205.   (cdr (assoc Code Lst))
  206. )


  207. (defun jk:DXF_MakeDxfList (CodeLst DataLst / Tmp inc)
  208.   (setq Inc -1)
  209.   (if
  210.     (/= (length CodeLst)(length DataLst))
  211.     Nil
  212.     (mapcar
  213.       '(lambda (%)
  214.          (setq inc (1+ Inc))
  215.          (if
  216.            (listp (setq Tmp (nth Inc DataLst)))
  217.            (append (list %) Tmp)
  218.            (cons % Tmp)
  219.          )
  220.        )
  221.        CodeLst
  222.     )
  223.   )
  224. )
  225. ;|

  226. Przyk?ad:
  227. (jk:DXF_MakeDxfList '(0 2 10)'("INSERT" "NAZWA" (0.0 0.0 0.0)))
  228. zwraca:
  229. ((0 . "INSERT")(2 . "NAZWA")(10 0.0 0.0 0.0))
  230. oraz:
  231. (jk:DXF_MakeDxfList '(0 2 10)'("INSERT" "NAZWA"))
  232. zwraca:
  233. nil |;
  234. (defun jk:DXF_mAssoc (key alist / x nlist)
  235.   (foreach % alist
  236.     (if (eq key (car %))
  237.       (setq nlist (cons (cdr %) nlist))
  238.     )
  239.   )
  240.   (reverse nlist)
  241. )
  242. (defun jk:CAL_Sequence (start lengt step / Tmp TmpList)
  243.   (if
  244.     (and (numberp start)(numberp lengt)(numberp step))
  245.     (progn
  246.       (setq Tmp Start)
  247.       (while
  248.         (< (length TmpList) (1- Lengt))
  249.         (setq Tmp (+ Tmp Step))
  250.         (setq TmpList (append (list Tmp) TmpList))
  251.       )
  252.       (cons Start (reverse TmpList))
  253.     )
  254.     Nil
  255.   )
  256. )
  257. (defun jk:TBL_isLay (Name)
  258.   (tblobjname "LAYER" (strcase Name))
  259. )


  260. (defun jk:TBL_isLTp (Name)
  261.   (tblobjname "LTYPE" (strcase Name))
  262. )

  263. (defun jk:TBL_LayIsLocked (Name)
  264.   (if
  265.     (jk:TBL_isLay Name)
  266.     (= 4 (logand 4 (cdr (assoc 70
  267.                           (tblsearch "LAYER" (strcase Name))
  268.       )))
  269.     )
  270.     0
  271.   )
  272. )
  273. (defun jk:SYS_UndoBegin ()
  274.   (vla-StartUndoMark (jk:ACX_ActDoc))
  275. )
  276. ;; =====================================  
  277. (defun jk:SYS_UndoEnd ()
  278.   (vla-EndUndoMark (jk:ACX_ActDoc))
  279. )
  280. ;;; by kojacek
  281. ;;;
  282. (defun jk:SYS_GetCpu ()
  283.   (apply 'strcat
  284.     (mapcar
  285.       '(lambda (%)
  286.          (if
  287.            (numberp %)
  288.            (strcat "(" (itoa %) " MHz)")
  289.            (strcat % ", ")
  290.          )
  291.        )
  292.        (mapcar
  293.         '(lambda (%)
  294.           (vl-registry-read
  295.             (strcat "HKEY_LOCAL_MACHINE\\Hardware\"
  296.                     "Description\\System\\CentralProcessor\\0"
  297.             )
  298.             %
  299.           )
  300.         )
  301.         '("Identifier" "ProcessorNameString" "~MHz")
  302.       )
  303.     )
  304.   )
  305. )

  306. ;; ------------------------------------------ by kojacek 2002 -;
  307. ;; Tworzy katalog. Zwraca T lub Nil (gdy niepowodzenie)        ;
  308. ;;                                                             ;
  309. (defun jk:SYS_MkDir (Pth / Lst)
  310.   (if
  311.     (setq Lst (cdr (jk:SYS_PathList Pth)))
  312.     (foreach % Lst
  313.       (if (not (vl-file-directory-p %))(vl-mkdir %))
  314.     )
  315.   )
  316. )

  317. ;; ------------------------------------------ by kojacek 2002 -;
  318. ;; Zwraca liste kolejnych sciezek dostepu katalogu             ;
  319. ;;                                                             ;
  320. (defun jk:SYS_PathList (Pth / tmp x Res)
  321.   (if
  322.     (setq tmp (jk:STR_parse Pth "\"))
  323.     (while Tmp
  324.       (setq x (apply
  325.                 'strcat
  326.                 (append
  327.                   (reverse
  328.                     (mapcar
  329.                       '(lambda (%)(strcat % "\"))
  330.                       (cdr (reverse Tmp))
  331.                     )
  332.                   )
  333.                   (list (last tmp))
  334.                 )
  335.               )
  336.             Tmp (reverse (cdr (reverse Tmp)))
  337.             Res (append (list x) Res)
  338.       )
  339.     )
  340.   )
  341.   Res
  342. )
  343. (defun jk:STR_parse (str chs / len c l s chsl cnt )
  344.   (setq chsl (jk:STR_MakeList chs))
  345.   (setq len (strlen str) s "" cnt (1+ len))
  346.   (while (> (setq cnt (1- cnt)) 0)
  347.     (setq c (substr str cnt 1))
  348.     (if (member c chsl)
  349.       (if (/= cnt len)
  350.         (setq l (cons s l) s "")
  351.       )
  352.       (setq s (strcat c s))
  353.     )
  354.   )
  355.   (cons s l)
  356. )
  357. ;;; by kojacek
  358. ;;; Zmienia warto?ci zmiennych z listy podanej jako argument [l]
  359. ;;;
  360. (defun jk:SYS_SetVars (l / e)
  361.   (if
  362.     (listp l)
  363.     (while l
  364.       (if
  365.         (setq e
  366.           (vl-catch-all-error-p
  367.             (vl-catch-all-apply
  368.               'setvar
  369.               (list (car l)(cadr l))
  370.             )
  371.           )
  372.         )
  373.         Nil
  374.         (setvar (car l)(cadr l))
  375.       )
  376.       (setq l (cddr l))
  377.     )
  378.     (setq e T)
  379.   )
  380.   e
  381. )
  382. ;;; by kojacek
  383. ;;; Funkcja zapamietuj?ca warto?ci zmiennych
  384. ;;;
  385. (defun jk:SYS_ModeS (l)
  386.   (if
  387.     (listp l)
  388.     (if
  389.       (setq l (vl-remove-if-not 'getvar l))
  390.       (if
  391.         (not *jk-Var)
  392.         (setq *jk-Var (mapcar '(lambda (%)(cons % (getvar %))) l))
  393.         (foreach % (mapcar '(lambda (%)(cons % (getvar %))) l)
  394.           (if
  395.             (not (car (assoc (car %) *jk-var)))
  396.             (setq *jk-Var (append *jk-Var (list %)))
  397.             Nil
  398.           )
  399.         )
  400.       )
  401.     )
  402.   )
  403.   *jk-Var
  404. )
  405. ;;; by kojacek
  406. ;;; Funkcja przywracaj?ca warto?ci zmiennych
  407. ;;;
  408. (defun jk:SYS_ModeR ()
  409.   (if
  410.     *jk-Var
  411.     (jk:SYS_SetVars
  412.       (apply
  413.         'append
  414.         (mapcar '(lambda (%)(list (car %)(cdr %)))
  415.                 *jk-var
  416.         )
  417.       )
  418.     )
  419.     Nil
  420.   )
  421.   (setq *jk-var nil)
  422. )
  423. ;; by kojacek
  424. ;; ---------------------------------------------------------- ;
  425. ;; zwraca liste symboli globalnych                            ;
  426. ;;                                                            ;
  427. (defun jk:SYS_GetGlobals (/ s)
  428.   (setq s
  429.      (vl-remove-if
  430.        '(lambda (%)
  431.          (/= (strcase (substr % 1 4)) "*JK-")
  432.        )
  433.        (atoms-family 1)
  434.      )
  435.   )
  436.   (if s
  437.     (mapcar
  438.       '(lambda (%)(cons % (vl-symbol-value (read %))))
  439.       (vl-sort s '<)
  440.     )
  441.     Nil
  442.   )
  443. )

  444. ;; --------------------------------------------------------- ;
  445. ;; zeruje zmienne globalne "*JK-..."                         ;
  446. ;;                                                           ;
  447. (defun jk:SYS_KillGlobals (/ s)
  448.   (if
  449.     (setq Lst (jk:SYS_GetGlobals))
  450.     (foreach % s
  451.       (cond
  452.         ( (= (type (cdr %)) 'VLA-OBJECT)
  453.           (vlax-release-object (cdr %))
  454.           (set (read (car %)) Nil)
  455.         )
  456.         (T (set (read (car %)) Nil))
  457.       )
  458.     )
  459.   )
  460. )



  461. ;;; 2002 by kojacek
  462. (vl-load-com)
  463. ;;;                                                            
  464. (defun C:REGCEN        (/ Sel Data Reg Obj Obj1 Obj2 Add Pt)
  465.   (if
  466.     (setq Sel (entsel "\n Wska? region lub bry??: "))
  467.      (if
  468.        (member
  469.          (jk:DXF 0 (setq Data (entget (setq Obj (car Sel)))))
  470.          '("3DSOLID" "REGION")
  471.        )
  472.         (if
  473.           (not (jk:ENT_isLocked Obj 1))
  474.            (progn
  475.              (jk:SYS_UndoBegin)
  476.              (cond
  477.                ((= (jk:DXF 0 Data) "REGION")
  478.                 (setq Reg  (jk:CON_VlaObject Obj)
  479.                       Obj1 (vla-Copy Reg)
  480.                       Obj2 (vla-Copy Reg)
  481.                 )
  482.                 (vla-Boolean
  483.                   (vla-AddExtrudedSolid
  484.                     (jk:ACX_GetModel)
  485.                     Obj1
  486.                     1.0
  487.                     0.0
  488.                   )
  489.                   acUnion
  490.                   (vla-AddExtrudedSolid
  491.                     (jk:ACX_GetModel)
  492.                     Obj2
  493.                     -1.0
  494.                     0.0
  495.                   )
  496.                 )
  497.                 (vla-Delete Obj1)
  498.                 (vla-Delete Obj2)
  499.                 (setq Add (jk:CON_VlaObject (entlast)))
  500.                 (setq Pt (vla-get-centroid Add))
  501.                 (vla-Delete Add)
  502.                )
  503.                (T
  504.                 (setq Pt
  505.                        (vla-get-centroid (jk:CON_VlaObject Obj))
  506.                 )
  507.                )
  508.              )
  509.              (entmake
  510.                (append
  511.                  (jk:DXF_MakeDxfList
  512.                    '(0 100 100)
  513.                    '("POINT" "AcDbEntity" "AcDbPoint")
  514.                  )
  515.                  (list
  516.                    (cons 410 (getvar "CTAB"))
  517.                    (cons
  518.                      10
  519.                      (vlax-safearray->list (vlax-variant-value Pt))
  520.                    )
  521.                  )
  522.                )
  523.              )
  524.              (jk:SYS_UndoEnd)
  525.            )
  526.         )
  527.         (princ "\nNale?y wskaza? region lub bry??. ")
  528.      )
  529.      (princ "\nNic nie wskazano. ")
  530.   )
  531.   (princ)
  532. )
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!

已领礼包: 3186个

财富等级: 富可敌国

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

使用道具 举报

已领礼包: 6468个

财富等级: 富甲天下

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

使用道具 举报

已领礼包: 3个

财富等级: 恭喜发财

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

使用道具 举报

已领礼包: 2226个

财富等级: 金玉满堂

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

使用道具 举报

已领礼包: 6056个

财富等级: 富甲天下

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

使用道具 举报

已领礼包: 3255个

财富等级: 富可敌国

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

使用道具 举报

已领礼包: 8727个

财富等级: 富甲天下

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

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-4-26 14:26 , Processed in 0.375385 second(s), 41 queries , Gzip On.

Powered by Discuz! X3.5

© 2001-2024 Discuz! Team.

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