悬之又玄的几个问题--弹一曲《笑傲江湖》,叹一声《知音难觅》
本帖最后由 自贡黄明儒 于 2012-11-23 10:29 编辑;;1 是不是可以不动用注册表,设置一个自己的变量?
;; 如果是这样,比使用注册表操作函数简单多了
(if (null (getenv "LMac\\ABBRotation"))
(setenv "LMac\\ABBRotation" "ON")
)
;;2 (startapp (findfile "EduPlotStamp.exe"))如果写成(startapp "EduPlotStamp.exe")在有些机器上是不能运行的
;; 尽管肯定是在支持目录下.
;;3 Vlisp编辑器在输出局部变量时,不认识pause为系统自己的保留字,会把它当作局部变量
;;4 选择集相减
;;ss1 ss2选择相同的东西
(setq ss1 (ssget))
(setq ss2 (ssget))
(equal ss1 ss2) ;返回nil
(command "._Select" ss1 "_Remove" ss2 "")
(sslength (setq ss (ssget "_P"))) ;ss 不为空看来用Select的方法相减还是件麻烦的事
;;看来还是用下面的方法可靠些
;;(setq ss1 (ssget)) (setq ss2 (ssget))
;;***********************功能 选择集相减
;;返回 选择集 or nil
;;(setq ss1 (ssget)) (setq ss2 (ssget))
(defun C:SS_Sub (SS1 SS2 / ENAME SS SSTEMP)
(cond ((and (equal (type ss1) 'PICKSET)
(equal (type ss1) 'PICKSET)
)
(cond ((equal (sslength ss1) (sslength ss2))
(vl-cmdf "_.select" ss1 "")
(setq ss (ssget "p"))
(vl-cmdf "_.select" ss2 "")
(setq ssTemp (ssget "p"))
(repeat (sslength ssTemp)
(Setq ENAME (SsName ssTemp 0))
(SsDel ENAME ssTemp)
(if (ssmemb ENAME ss)
(SsDel ENAME SS)
)
)
(if (equal (sslength ss) 0)
nil
ss
)
)
(T
(command "._Select" ss1 "_Remove" ss2 "")
(ssget "_P")
)
)
)
((and (equal (type ss1) 'PICKSET)
(not (equal (type ss2) 'PICKSET))
)
ss1
)
(T nil)
)
)
;;自贡黄明儒2012.8.23
;;***********************功能 选择集相减
;;5自定义了acad.lsp,有些cad并不加载它,这是为什么呢?难道是电脑智能,怕了acad.lsp病毒,挥刀自宫了?
;;没有人跟贴,我自娱自乐
;;自定义变量保存方法盘点,向各位高手学习
;;1保存变量到 图形文档中
(defun EF:getVar (sVar)
(cdr
(assoc (strcase sVar) (vlax-ldata-get "EF_Tools" "Var"))
)
;;(vlax-ldata-put "EF_Tools" "EF_InfoList" lst_Info)
)
(defun EF:setVar (sVar value / varlist)
(if (assoc (setq sVar (strcase sVar))
(setq varlist (vlax-ldata-get "EF_Tools" "Var"))
)
(vlax-ldata-put
"EF_Tools"
"Var"
(subst (cons sVar value) (assoc sVar varlist) varlist)
)
(vlax-ldata-put
"EF_Tools"
"Var"
(cons (cons sVar value) varlist)
)
)
value
)
;;2 保存变量到 注册表
(setq number
(vl-registry-read
"HKEY_CURRENT_USER\\software\\TH++"
"MySetVar"
)
)
(vl-registry-write
"HKEY_CURRENT_USER\\software\\TH++"
"MySetVar"
varnumber
)
;;3 用系统变量
(if (null (getenv "LMac\\ABBRotation"))
(setenv "LMac\\ABBRotation" "ON")
)
;;4 users5 highflybird喜欢用这个,可是users5并不随图保存?我郁闷.
;;AutoCAD到底给我们留了多少个这们的变量?
;;5 各文档间使用同一变量,CAD关闭后消失
(vl-propagate 'HH:MyNameis)
;;处理自定义变量,用logand 自定义了acad.lsp,有些cad并不加载它,这是为什么呢?难道是电脑智能,怕了acad.lsp病毒,有了免疫能力?
我现在使用sendkeys,不在使用PGP了,
我觉得要换个角度想一下,我们的程序一是自己用,这时什么都可以调整;二是其它人用,人家根本就不在乎我们使用什么方式来实现命令的加载,所以我使用秋枫的的程序来打包,其它人只用装一遍就行了 ;;才找到知音二人,G版和革天明,听G版言,我再弹
;;Caoyin那把刷子,看起来爽,用起来爽,但问题1 回车中不断;2 选择集没有排序
;;第一个问题无法解决,可能也只有C版自己才能解决,我试了几次都没有成功
;;第二个问题就简单多了,看下面
;;选择集SS排序
;;;******************************************************选择集SS排序
;;选择集排序在其它地方也是用得着的呀,为什么不能写成通用性函数呢?
;;"D->U"从下到上;"U->D"从上到下;"L->R"从左到右;"R->L"从右到左
;;示例(setq ss (ssget)) (SS_Sort ss "D->U" "L->R")下到上,左到右
;;自贡黄明儒 2012.8.28
(defun SS_Sort (SS Sort1 Sort2 / E LST N PT10)
;;1 [功能] 图元列表->选择集 By caiqs
(defun lst->ss (lst / SS X)
(setq ss (ssadd))
(last (mapcar '(lambda (x) (ssadd x ss)) lst))
)
;;2 表 排序
(defun Sort_pList (PLIST Sort1 Sort2 / SYMBOL1 SYMBOL2)
(cond
((member Sort1 (list "L->R" "R->L"))
(cond ((equal Sort1 "L->R") (setq Symbol1 '>))
(T (setq Symbol1 '<))
)
(cond ((equal Sort2 "D->U") (setq Symbol2 '>))
(T (setq Symbol2 '<))
)
(vl-sort
PLIST
'(lambda (p1 p2)
(cond (((eval Symbol1) (car (car p1)) (car (car p2))) T)
((and (= (car (car p1)) (car (car p2)))
((eval Symbol2) (cadr (car p1)) (cadr (car p2)))
)
T
)
)
)
)
)
(T
(cond ((equal Sort1 "D->U") (setq Symbol1 '>))
(T (setq Symbol1 '<))
)
(cond ((equal Sort2 "L->R") (setq Symbol2 '>))
(T (setq Symbol2 '<))
)
(vl-sort
PLIST
'(lambda (p1 p2)
(cond (((eval Symbol1) (cadr (car p1)) (cadr (car p2))) T)
((and (= (cadr (car p1)) (cadr (car p2)))
((eval Symbol2) (car (car p1)) (car (car p2)))
)
T
)
)
)
)
)
)
)
;;3 选择集SS排序 主程序
(repeat (setq n (sslength ss))
(setq e (ssname ss (setq n (1- n))))
(setq pt10 (cdr (assoc 10 (entget e))))
(setq lst (cons (cons pt10 e) lst))
)
(setq lst (mapcar 'cdr (Sort_pList lst Sort1 Sort2)))
(lst->ss lst)
)
;;;******************************************************选择集SS排序
SS 这个排序有严重问题对 镜像过的图元 及 拷贝的图元 排序是错的。 俺留下QQ,呵呵,望交流。651884547 。 本帖最后由 阿然 于 2012-11-23 08:41 编辑
useri1-5是可以随文件保存的,不过不喜欢用这个,不存在唯一性,其他lisp也有可能使用这些变量。 自贡黄明儒 发表于 2012-8-28 11:24 static/image/common/back.gif
;;才找到知音二人,G版和革天明,听G版言,我再弹
;;Caoyin那把刷子,看起来爽,用起来爽,但问题1 回车中不断 ...
呵呵,你这个排序俺很喜欢,就是有点瑕疵。希望能改正哇。 这个先留个脚印有用!楼主再来一曲 保存变量,用字典,现在用字典搞搞。不知道还有其他好方法没有
页:
[1]
2