浓缩精典vlisp/vba函数
shixiong2
shixiong2 Lv.2
2007年04月03日 10:32:43
只看楼主

希望大家在此贴上自已写的精典vlisp/vba函数,要求是程序短小精练,不超过二十行,但是功能实用我先来;;;获取样条曲线,多段线各顶点坐标,返回顶点坐标组成的表;;;师兄 2007/4/3 QQ361865648(vl-load-com)(defun c:getallpt(/ en enlst x)(setq en(car(entsel)));_获得对象,提示时请选择符合条件的对象

希望大家在此贴上自已写的精典vlisp/vba函数,要求是程序短小精练,不超过二十行,但是功能实用

我先来

;;;获取样条曲线,多段线各顶点坐标,返回顶点坐标组成的表
;;;师兄 2007/4/3 QQ361865648
(vl-load-com)
(defun c:getallpt(/ en enlst x)
(setq en(car(entsel)));_获得对象,提示时请选择符合条件的对象
(setq enlst(entget en));_取对象数据表
(vl-remove-if ’(lambda (x) (/= (car x) 10)) ;_稍加修改可改变程序功能
;;;在此可作进一步处理,获得更强之功能
enlst)
)
免费打赏
biechen
2007年04月03日 10:47:29
2楼
强烈以行动支持师兄发起的活动:)
下面是几个实体颜色操作的函数
;|Function: fe-get-objcolor()
参数:

功能:
取得实体颜色,包括随层
|;
(defun fe-get-objcolor ( / en)
(setq en (car (entsel)))
(fe-get-color en)
)


;|Function: fe-get-color(ename)
参数:
ename: 对象名称
功能:
取得实体颜色,包括随层
|;
(defun fe-get-color (_ename / col dxflist)
(setq dxflist (entget _ename))
(or
(setq col (cdr (assoc 62 dxflist))) ;取得对象颜色
(setq col (cdr (assoc 62 (tblsearch "layer" (cdr (assoc 8 dxflist))))));如果颜色随层
)
col
);end fe-get-color

;|Function: fe-put-color(ename color)
参数:
ename: 对象名称
功能:
修改实体颜色
|;
(defun fe-put-color(_sname _color / dxflist)
(setq dxflist (entget _sname))
(if (assoc 62 dxflist)
(setq dxflist (subst (cons 62 _color) (assoc 62 dxflist) dxflist))
(setq dxflist (append dxflist (list (cons 62 _color))))
)
(entmod dxflist)
)
回复
biechen
2007年04月03日 10:51:52
3楼
dxf常用操作

;-----------------------------------------
; function dxf
;-----------------------------------------
;返回dxf群码内组码号为code的点对内容
;参数:dxflist -- dxf组码列表
; code -- dxf组码号
;-----------------------------------------
(defun dxf (code dxflist)
(cdr (assoc code dxflist))
)
;--- end dxf--------


;-----------------------------------------
; function dxf_read
;-----------------------------------------
;返回dxf群码内组码号为code的点对内容
;参数:ename -- 一个对象的id
; code -- dxf组码号
;-----------------------------------------
(defun dxf_read (code ename)
(cdr (assoc code (entget ename)))
)
;--- end dxf_read--------




;-----------------------------------------
; function dxf_replace
;-----------------------------------------
;置换dxf群码内组码号为code的点对内容
;参数:ename-- 一个对象的id
; code -- dxf组码号
; newdata --新数值
;
;-----------------------------------------
(defun dxf_replace (code newdata ename / dxflist)
(setq dxflist (entget ename)
dxflist (subst (cons code newdata) (assoc code dxflist) dxflist))
(entmod dxflist)(entupd ename)
)
;--- end dxf_replace--------


;-----------------------------------------
; function dxf_replace2
;-----------------------------------------
;置换dxf群码内组号为code的点对序列
;参数:ename-- 一个对象的id
; code -- dxf组码号
; newcons --新点对
;-----------------------------------------
(defun dxf_replace2 (code newcons ename / dxflist)
(setq dxflist (entget ename)
dxflist (subst newcons (assoc code dxflist) dxflist))
(entmod dxflist)(entupd ename)
)
;--- end dxf_replace2--------


;-----------------------------------------
; function dxf_ss_replace
;-----------------------------------------
;置换选择集ss内所有对象的dxf群码内组码号为code的点对内容
;参数:ename-- 一个对象的id
; code -- dxf组码号
; newdata --新数值
;
;-----------------------------------------
(defun dxf_ss_replace (code newdata ss / i dxflist)
(setq i -1)
(repeat (sslength ss)
(setq ename (ssname ss (setq i (1+ i)))
dxflist (entget ename)
dxflist (subst (cons code newdata) (assoc code dxflist) dxflist))
(entmod dxflist)
)
)
;--- end dxf_replace--------
回复
biechen
2007年04月03日 11:00:11
4楼
;|检测选择的文字是否为正整数
是-返回T
否-返回nil
参数:
_ename - (car (entsel))
|;
(defun fe-is-integer( _ename / str )
(setq str (cdr (assoc 1 (entget _ename))))
(if (wcmatch str "~*[~0-9]*")
T
nil
)
)
回复
fsjz300
2007年04月03日 20:55:14
5楼
没你们那么在行,也帖一个来热闹一下。
功能:使程序中生成的图元组成一个选择集(适合程序中生成多个图元,且又需要选择这些图元)。

;|需要搭配使用:
;|(ksxz)
;|自定义的图元生成过程
;|(setq ss (jsxz))形成选择集
;|由于水平不行,还请高手帮我改下这个过程,让它也缩下水。
;|
;|By Dream.Fei QQ:7686599
;|
;;___开始选择___
(defun ksxz (/ olden el)
(setq el (ssget "L"))
(if (= el nil)
(vlax-ldata-put "xz" "olden" "")
(progn
(setq olden (ssname el 0))
(vlax-ldata-put "xz" "olden" olden)
)
)
)
;;____结束选择____
(defun jsxz (/ loop_id en ss)
(setq loop_id T)
(if (= (vlax-ldata-get "xz" "olden") "")
(progn
(setq en (entnext))
(setq ss (ssadd en))
)
(progn
(setq en (vlax-ldata-get "xz" "olden"))
(setq ss (ssadd))
)
)
(while loop_id
(setq en (entnext en))
(if (= en nil)
(setq loop_id nil)
(setq ss (ssadd en ss))
)
)
ss
)
回复
shixiong2
2007年04月04日 07:35:23
6楼
希望在此贴的代码不要太长,否则就不叫浓缩了
回复
水的畅想
2007年04月06日 14:54:53
7楼

不过师兄的作品多拿出来 一点嘛~~
回复
shixiong2
2007年04月07日 09:42:41
8楼




我的目的是促进大家的热情参与,并不是为了表现自已
回复
水的畅想
2007年04月07日 10:04:38
9楼

哦~
原来世外高人也~
回复
gwh0298
2007年04月13日 11:03:03
10楼
回复
xulh
2007年04月24日 13:58:49
11楼
好东西当然要大家一起分享!!!!
谢谢楼主的无私奉献!!!
回复

相关推荐

APP内打开