Copyright © 2004-2022 SQL: 0.96 saniye - Sorgu: 54 - Ortalama: 0.01778 saniye
29.07.2017 07:16
cekirge66 |
merhaba hocalarım
tüm layer i offsetlemek ile ilgili bir lisp buldum ama seçmiş oldugum çizgilerin iki yönüne doğru offsetlemekte. ben sadece ekrana göre aşağı yönde ofsetlemesini ve ofsetlediği objelerin silinmesini istiyorum mümkün müdür ? yardımlarınız için şimdiden teşekkür ederim. (defun c:osd ( / ss e ) (setq ofd (cond ((getdist (strcat "\nEnter Offset distance" (if ofd (strcat " <" (rtos ofd) ">: ") ": ") )))(ofd)) ) (if (setq ss (ssget ":L")) (repeat (sslength ss) (setq e (vlax-ename->vla-object (ssname ss 0))) (if (vlax-method-applicable-p e 'Offset) (mapcar '(lambda (o) (vl-catch-all-error-p (vl-catch-all-apply 'vla-offset (list e o))))(list ofd (- ofd))) ) (ssdel (ssname ss 0) ss))) (princ) )
|
29.07.2017 08:17
macros55 |
POLYLINE VE LINE aşağı ve yukarı offsetler ve orjinal hattı seçime bağlı siler veya saklar MOF1 aşağı ve sola MOF2 yukarı ve sağa (aşağı yukarı yatay ve açılı hatlar için, sola sağa dikyek olan hatlar için)
Kod: ;;MOF1
;;POLYLINES LINES LEFT - BOTTOM ;; cizimokulu.com (defun c:mof1 (/ plines ; selection set of polylines ext ; extrnal point dist ; distance to offset poly ; a polyline from plines plist ; the list of poly del ; polyline to delete int ; internal point i) (command "undo" "begin") (princ "select polylines") (setq plines (ssget) i 0 ext (getvar "limmax") dist (getdist "distance") ) (repeat (sslength plines) (setq poly (ssname plines i)) (setq plist (entget poly)) (command "offset" dist poly ext "") ;(setq del (entlast) ;int (polar ;(cdr (assoc 10 (entget del))) ;(angle ;(cdr (assoc 10 (entget del))) ;(cdr (assoc 10 plist))) ;(* 2 (distance (cdr (assoc 10 plist)) ;(cdr (assoc 10 (entget del))))))) ;(command "offset" dist poly int "") ;(entdel del) (setq i (1+ i)) ) (command "undo" "end") (if (= "Y" (strcase (getstring "\ndelete initial polylines? (Y/N)")) ) (command "erase" plines "") ) ) ;;MOF2 ;;POLYLINES LINES RIGHT - TOP ;; cizimokulu.com (defun c:mof2( / plines ; selection set of polylines ext ; extrnal point dist ; distance to offset poly ; a polyline from plines plist ; the list of poly del ; polyline to delete int ; internal point i) (command "undo" "begin") (princ "select polylines") (setq plines (ssget) i 0 ext (getvar "limmax") dist (getdist "distance")) (repeat (sslength plines) (setq poly (ssname plines i)) (setq plist (entget poly)) (command "offset" dist poly ext "") (setq del (entlast) int (polar (cdr (assoc 10 (entget del))) (angle (cdr (assoc 10 (entget del))) (cdr (assoc 10 plist))) (* 2 (distance (cdr (assoc 10 plist)) (cdr (assoc 10 (entget del))))))) (command "offset" dist poly int "") (entdel del) (setq i (1+ i))) (command "undo" "end") (if (= "Y" (strcase (getstring "\ndelete initial polylines? (Y/N)"))) (command "erase" plines "")) ) macros55 (29.07.2017 10:29 GMT) |
29.07.2017 09:58
alumina |
Alıntı Secilen cizgileri asagi yonde ofsetleyerek siler. Kod: (defun c:oo (/ dc sl ds) (vl-load-com)
(if (and (ssget '((0 . "line"))) (setq dc (vlax-get (vlax-get-acad-object) 'activedocument) sl (vlax-get dc 'activeselectionset) ds (getdist "\nOffset dist:"))) (progn (vla-startundomark dc) (vlax-map-collection sl '(lambda(a) (vlax-invoke a 'offset (* (if (<= (/ pi 2) (vla-get-Angle a) (+ pi (/ pi 2))) 1 -1) ds)) (vla-delete a))) (vla-endundomark dc) (vla-delete sl) ) ) (prin1) )
|
29.07.2017 10:32
cekirge66 |
minnettarım..
|
alumina |
Alıntı Bir gun ogrenmeye karar verirsen elinde kaynak olmasi icin biraz daha basitlestirilmis bir versiyonu.. Kod: (defun c:ok (/ ds n) (vl-load-com)
(if (and (ssget '((0 . "line"))) (setq ds (getdist "\nOffset dist:"))) (progn (setvar 'cmdecho 0) (vl-cmdf "._undo" "be") (mapcar '(lambda(a) (vlax-invoke (setq n (vlax-ename->vla-object a)) 'offset (* (if (<= (/ pi 2) (vla-get-Angle n) (+ pi (/ pi 2))) 1 -1) ds)) (entdel a)) (vl-remove-if 'listp (mapcar 'cadr (ssnamex (ssget "_P"))))) (vl-cmdf "._undo" "e") (setvar 'cmdecho 1) ) ) (prin1) )
|