57
351
294
后起之秀
(defun c:gv (/ *error* scl dis ov vl lne pnt ang pt1 pt2) ;; Always localise your variables! (or (not (zerop (setq scl (getvar "DIMSCALE")))) (setq scl 1.)) ;; Dimscale may be zero - need to check for this (setq dis (* scl 0.0703)) ;; Use an Error Handler as we are tampering with Sys Vars (defun *error* (msg) (if ov (mapcar 'setvar vl ov)) ; Reset Sys Vars (if (not (wcmatch (strcase msg) "*BREAK,*CANCEL*,*EXIT*")) (princ (strcat "\n<< Error: " msg " >>"))) (princ)) (setq vl '("CMDECHO" "OSMODE" "CLAYER") ; Sys Var list ov (mapcar 'getvar vl)) ; Get Old Sys Var Values (if (or (tblsearch "BLOCK" "gv") ; Check for Block in Dwg... (findfile "gv.dwg")) ;... And in Search path (progn (while ; While the following returns T (progn ; Wrap the following expressions (setq lne (entsel "\nSelect a Line: ")) ; Select a Line (cond ((null lne) t) ; Stay in Loop ((eq "LINE" (cdr (assoc 0 (setq elst (entget (car lne)))))) nil) ; Exit Loop (t (princ "\n** Incorrect Selection **"))))) ; Stay in Loop (if (setq pt (getpoint "\nPick Insertion Point: ")) ; Prompt for Point (progn (setq ang (angle (cdr (assoc 10 elst)) (cdr (assoc 11 elst)))) ; Get Line Angle (mapcar 'setvar vl (list 0 0 (cdr (assoc 8 (entget (car lne)))))) ; Set Sys Vars to how we want them - CMDECHO=0, OSMODE=0, CLAYER= <line layer> (command "-insert" "gv" pt scl scl (* 180. (/ ang pi))) ; insert Block ;; Prefix commands with "_." to make them language compatible (setq pt1 (polar pt ang dis) pt2 (polar pt (- ang pi) dis)) (command "_.break" lne "_F" pt1 pt2)))) (princ "\n<< Block Not Found >>")) ; Else the Block was not found (mapcar 'setvar vl ov) ; Reset Sys Vars (princ)) ; Exit Cleanly
(defun c:priser (/ *error* scl dis ov vl lne pnt ang pt1 pt2) ;; Always localise your variables! (or (not (zerop (setq scl (getvar "DIMSCALE")))) (setq scl 1.)) ;; Dimscale may be zero - need to check for this (setq dis (* scl 0.0703)) ;; Use an Error Handler as we are tampering with Sys Vars (defun *error* (msg) (if ov (mapcar 'setvar vl ov)) ; Reset Sys Vars (if (not (wcmatch (strcase msg) "*BREAK,*CANCEL*,*EXIT*")) (princ (strcat "\n<< Error: " msg " >>"))) (princ)) (setq vl '("CMDECHO" "OSMODE" "CLAYER") ; Sys Var list ov (mapcar 'getvar vl)) ; Get Old Sys Var Values (if (or (tblsearch "BLOCK" "priser") ; Check for Block in Dwg... (findfile "priser.dwg")) ;... And in Search path (progn (while ; While the following returns T (progn ; Wrap the following expressions (setq lne (entsel "\nSelect a Line: ")) ; Select a Line (cond ((null lne) t) ; Stay in Loop ((eq "LINE" (cdr (assoc 0 (setq elst (entget (car lne)))))) nil) ; Exit Loop (t (princ "\n** Incorrect Selection **"))))) ; Stay in Loop (if (setq pt (getpoint "\nPick Insertion Point: ")) ; Prompt for Point (progn (setq ang (angle (cdr (assoc 10 elst)) (cdr (assoc 11 elst)))) ; Get Line Angle (mapcar 'setvar vl (list 0 0 (cdr (assoc 8 (entget (car lne)))))) ; Set Sys Vars to how we want them - CMDECHO=0, OSMODE=0, CLAYER= <line layer> (command "-insert" "priser" pt scl scl (* 180. (/ ang pi))) ; insert Block ;; Prefix commands with "_." to make them language compatible (setq pt1 (polar pt ang dis) pt2 (polar pt (- ang pi) dis)) (command "_.break" lne "_F" pt1 pt2)))) (princ "\n<< Block Not Found >>")) ; Else the Block was not found (mapcar 'setvar vl ov) ; Reset Sys Vars (princ)) ; Exit Cleanly
使用道具 举报
0
269
279
限制会员
本版积分规则 发表回复 回帖后跳转到最后一页
微信公众平台
扫描访问手机版
点击图片下载手机App
|关于我们|小黑屋|乐筑天下 繁体中文
GMT+8, 2025-3-5 06:04 , Processed in 0.792069 second(s), 62 queries .
© 2020-2025 乐筑天下
在线时间:10:00-17:00
暂无
扫一扫,关注我们
帮助中心
关于我们
下载APP客户端