| Правила | Регистрация | Пользователи | Сообщения за день |  Справка по форуму | Файлообменник |

Вернуться   Форум DWG.RU > Программное обеспечение > AutoCAD > Как быстро вырезать фрагмент чертежа??!!!

Как быстро вырезать фрагмент чертежа??!!!

Ответ
Поиск в этой теме
Непрочитано 28.06.2005, 09:22 #1
Как быстро вырезать фрагмент чертежа??!!!
vitamin
 
Регистрация: 28.06.2005
Сообщений: 3

Так чтобы просто выделил ужную часть - и отрезал то, что выделил....
Мож какие модули есть или че-нить???
Просмотров: 80621
 
Непрочитано 28.06.2005, 09:50
#2
Chief Justice


 
Регистрация: 29.01.2004
Сообщений: 494


В смысле вырезал или удалил?...
Для выноса узла в СПДС есть хороший инструмент...
Chief Justice вне форума  
 
Автор темы   Непрочитано 28.06.2005, 10:02
#3
vitamin


 
Регистрация: 28.06.2005
Сообщений: 3
<phrase 1=


Что такое СПДС и что за инструмент??? Если можно поподробнее!
В смысле скопировал нужную часть чётко по границам выделения -> и сделал из нее отдельный чертёж;-)
vitamin вне форума  
 
Непрочитано 28.06.2005, 10:26
#4
Apelsinov

Проектировщик ВК. LISP-любитель.
 
Регистрация: 15.12.2003
Москва
Сообщений: 1,189
<phrase 1=


>vitamin

В СПДС графикс (это такая примочка к акаду см. http://www.autocad.ru/application/prod_931.htm ) в версии для асад 2002 есть команда SPGRFFRAGM , она и "вырезает".

Но это не единственный метод.
Можно просто очертить полилинией нужный контур, и с помощью команды из express tools (тож примочка) EXTRIM - обрезать примитивы выходящие за контур.

Но все это в общем-то никому не надо (ИМХО) , потому как есть замечательная вещь viewport, позволяющая вставиль в лист любой узел ничего не обрезая, и есть команда xclip , задающая видимый контур внешней ссылки.

К тому-же проблемы с обрезанием обязательно возникнут при попытке вырезать контуром по блоку, внешней ссылке, возможно штриховке, солидам, примитивам из других приложений и т.д.
Apelsinov вне форума  
 
Автор темы   Непрочитано 28.06.2005, 12:23
#5
vitamin


 
Регистрация: 28.06.2005
Сообщений: 3
<phrase 1=


Вот xclip то, что надо!!
vitamin вне форума  
 
Непрочитано 28.06.2005, 15:01
#6
Vook


 
Регистрация: 18.11.2004
Сообщений: 76


А может проще видовым экраном воспользоваться?
Vook вне форума  
 
Непрочитано 02.07.2005, 17:33
#7
Vova

Engineer
 
Регистрация: 05.09.2003
New-York
Сообщений: 10,288


Вот что нашлось в моей коллекции. Может, кто из программистов осовременит. Вызывается набором слова DTL
Цитата:
;=======================================================================
; Allegro TABLET TOOLS LISP file
; DTL.LSP
;
; Extracts a section of a drawing for a detail.
; Lines, Arcs, & Circles are trimmed to the box boundary.
; P-LINES and equal scale blocks are exploded one level in the detail
; before trimming.
;
; (c) 1988 Robert McNeel & Assoc., 1310 Ward St., Seattle, WA, 98109
; This routine is submitted for private non-resale use by end users.
;=======================================================================
(princ "\nInitial load .. please wait\n")
;=======================================================================
(defun val (x e) (cdr (assoc x e)))
(defun enttype (e) (cdr (assoc 0 e)))
(defun entname (e) (cdr (assoc -1 e)))
(setq >90 (/ pi 2) >270 (* 3 (/ pi 2)))
;=======================================================================
; Find the 'endpoints ' of the LINES, ARCS, & CIRCLES in ss that are
; outside a rectangle described by the opposite corners pll and pur.
; and submits them to the command function.
;-----------------------------------------------------------------------
(defun osends (ss pll pur / z eps)
(ends ss) ;this puts the 'endpoints' in a list, eps
(foreach z eps ;this checks if they are outside the rectangle
(if (or (< (caadr z) (car pll))
(< (cadadr z) (cadr pll))
(> (caadr z) (car pur))
(> (cadadr z) (cadr pur))
)
(command z)
)
)
)
;-----------------------------------------------------------------------
; Finds the 'endpoints' of LINES, ARCS, & CIRCLES in ss.
; 'Endpoints' are:
; LINES: endpoints
; ARCS: endpoints and quadrant points
; CIRCLES: quadrant points
; The endpoint lists are consed into the list eps (global).
;-----------------------------------------------------------------------
(defun ends (ss / i ent cen)
(setq len (sslength ss) i 0) ;get number of entities
(while (< i len) ;loop thru them
(setq ent (entget (ssname ss i))) ;get assoc list
(cond ;Check for LINES, ARCS, & CIRCLES and cons
; the appropriate points into eps.
;Other entity types are ignored.
;LINES
((= (enttype ent) "LINE")
(setq eps (cons (list (entname ent) (val 10 ent)) eps))
(setq eps (cons (list (entname ent) (val 11 ent)) eps)) )
;ARCS
((= (enttype ent) "ARC")
(setq cen (val 10 ent))
(setq eps (cons
(list (entname ent)
(polar cen 0 (val 40 ent))) eps))
(setq eps (cons
(list (entname ent)
(polar cen >90 (val 40 ent))) eps))
(setq eps (cons
(list (entname ent)
(polar cen pi (val 40 ent))) eps))
(setq eps (cons
(list (entname ent)
(polar cen >270 (val 40 ent))) eps))
(setq eps (cons
(list (entname ent)
(polar cen (val 50 ent) (val 40 ent))) eps))
(setq eps (cons
(list (entname ent)
(polar cen (val 51 ent) (val 40 ent))) eps))
(setq eps (cons
(list (entname ent)
(osnap (polar cen (val 51 ent) (val 40 ent)) "mid")) eps)) )
;CIRCLES
((= (enttype ent) "CIRCLE")
(setq cen (val 10 ent))
(setq eps (cons
(list (entname ent)
(polar cen 0 (val 40 ent))) eps))
(setq eps (cons
(list (entname ent)
(polar cen >90 (val 40 ent))) eps))
(setq eps (cons
(list (entname ent)
(polar cen pi (val 40 ent))) eps))
(setq eps (cons
(list (entname ent)
(polar cen >270 (val 40 ent))) eps)) )
)
(setq i (1+ i)) ;Next entity
)
)
;-----------------------------------------------------------------------
;Explodes all p-lines in selection set s
;-----------------------------------------------------------------------
(defun exp_pl (s / i len ent)
(setq i 0 len (sslength s))
(while (< i len)
(setq ent (entget (ssname s i)))
(cond
((= (enttype ent) "POLYLINE")
(command "explode" (entname ent))
)
;((= (enttype ent) "INSERT")
;(if (= (val 41 ent) (val 42 ent) (val 43 ent)) ;check equal scale
;(command "explode" (entname ent))


)
(setq i (+ 1 i))
)
)
;-----------------------------------------------------------------------
;erases parts of exploded p-lines that are outside target area
;-----------------------------------------------------------------------
(defun era_xtra (e)
(setq ssx (ssadd))
(while (setq e (entnext e))
(if (not (ssmemb e ss))
(ssadd e ssx)
)
)
(command "erase" ssx "")
)
;-----------------------------------------------------------------------
; Gets the geometry and calls routines to do the trimming.
;-----------------------------------------------------------------------
(defun c:dtl (/ px py pxx pyy xs ss b ssx)
(setvar "cmdecho" 0)
(command "undo" "begin")
(if (and
;This defines a rectangle to be copied out to a detail
(setq px (getpoint "\nFirst corner: "))
(setq py (getcorner px "\nOther corner: "))
;This is the position of the lower left corner of the detail
(setq pxx (getpoint px "\nNew first corner position: "))
;This is a size adjust factor for scaling the detail
(setq xs (getreal "\nScale factor for detail: ")) )
(progn
;copy out the stuff selected
(command "copy" "c" px py "" px pxx)
(command "pline" px (list (car px) (cadr py)) ;draw an outline of
py (list (car py) (cadr px)) "c") ; the base area.
;these are the new entities that may need trimming.
(setq ss (ssget "c" pxx (polar pxx (angle px py) (distance px py))))
;first explode p-lines because if you trim them, you get too
;many new entities to deal with. (could do blocks to)
(setq last (entlast)) ;save end of database
(exp_pl ss) ;this explodes them
;then get all the new parts into ss
(setq ss (ssget "c" pxx (polar pxx (angle px py) (distance px py))))
;and erase ones that are clear outside rectangle
(era_xtra last)
(command "scale" ss "" pxx xs) ;Scale the detail
;new other corner point of detail
(setq pyy (polar pxx (angle px py) (* xs (distance px py))))
(command "pline" pxx (list (car pxx) (cadr pyy)) ;Box around the
pyy (list (car pyy) (cadr pxx)) "c") ;detail
(command "trim" (setq b (entlast)) "") ;Last P-line is cutting edge
(osends ss pxx pyy) ;This finds the ends that are outside the box
; and trims them.
(command "") ;Terminate trim
(redraw b)
)
)
(command "undo" "end")
(setvar "cmdecho" 1)
(princ)
)
Vova вне форума  
 
Непрочитано 03.07.2005, 03:47
#8
Startrek

AutoCAD/AutoLISP
 
Регистрация: 27.08.2003
Seattle/USA
Сообщений: 1,133


ctrl+c
выделить (выбрать) что надо и
ctrl+v
в этот же чертеж или в любой другой
(clipboard function)
Startrek вне форума  
 
Непрочитано 03.07.2005, 23:31
#9
Perezz!!
Moderator

архитектор
 
Регистрация: 21.08.2003
Москва
Сообщений: 3,587


Рисуешь рамку -> Extrim (это из Express Tools) -> на выбор удалить не нужное или скопировать в буфер нужное.
Perezz!! вне форума  
 
Непрочитано 16.01.2007, 16:23
#10
Snoker

Помошник архитектора
 
Регистрация: 16.01.2007
СНГ
Сообщений: 6


А если screenshot а потом обратно всунуть как изображение?
Snoker вне форума  
 
Непрочитано 16.01.2007, 17:09
#11
Огурец

Profan
 
Регистрация: 27.04.2005
Москва
Сообщений: 6,753
Отправить сообщение для Огурец с помощью Skype™


Цитата:
Сообщение от Snoker
А если screenshot а потом обратно всунуть как изображение?
screenshot - это будет вставка растра в векторную графику.
Огурец вне форума  
 
Непрочитано 16.01.2007, 18:59
#12
Snoker

Помошник архитектора
 
Регистрация: 16.01.2007
СНГ
Сообщений: 6


Угу! Но в некоторых архитектурных изваяниях на autocad-е при помощи Super Hatch, например. заливаются окна небесами из разных jpg-ов. К сожалению Viewport в Super Hatch не вставить - вот и приходится выдумывать :?
Было бы хорошо обвести произвольным контуром шматочек сложного и хитрого узла и превратить его тут же в блок. А потом уж че угодно делай
Snoker вне форума  
 
Непрочитано 17.01.2007, 08:20
#13
nikolaev

конструктор
 
Регистрация: 28.08.2003
Мос. область
Сообщений: 119


В марте 2006г я поместил на форуме простенький лисп C:frag (поищите поиском), который вырезает фрагмент чертежа в модели.
Но тут же был заклеван любителями лайутов.
Я конструктор - механик, черчу в модели, а этот лисп очень полезен для черчения выносных фрагментов чертежа.
nikolaev вне форума  
 
Непрочитано 19.01.2007, 11:56
#14
Snoker

Помошник архитектора
 
Регистрация: 16.01.2007
СНГ
Сообщений: 6


Да, для примитивов все нормально, но нужно не удалить все лишнее вогруг фрагмента а скопировать его в буфер. Команда extrim не имеет опции копирования - она портит исходный чертеж. Приходится делать копию чертежа, открывать его в другом окне и т.д. и так для каждого кусочка
Вот если бы в экспресс была команда excopy 8) !
Snoker вне форума  
 
Непрочитано 19.01.2007, 12:08
#15
Perezz!!
Moderator

архитектор
 
Регистрация: 21.08.2003
Москва
Сообщений: 3,587


Вот если бы в экспресс была комманда "сделать нужный мне чертёж", вот это была бы жизнь.
Perezz!! вне форума  
 
Непрочитано 19.01.2007, 12:32
#16
Snoker

Помошник архитектора
 
Регистрация: 16.01.2007
СНГ
Сообщений: 6


Видать достали юзеры...
Хотелось пригласить продолжить тему - каждый раз, делая лишние операции или изобретая велосипед, мы отнимаем у себя время. Может есть все-таки такая примочка?
Я вовсе не противник viewport-ов и прочих прелестей acadа - использую постоянно. Но бывает надо и так.
И в конце концов, если кто-то придумал тот же extrim, значит это кому-нибудь нужно?
Snoker вне форума  
 
Непрочитано 19.01.2007, 19:10
#17
mmax

Программист широкого профиля.
 
Регистрация: 08.09.2005
Челябинск
Сообщений: 722


Действительно, былобы очень замечательно, нарисовать замкнутый контур и скопировать все что внутри него, а примитивы которые вылезают за контур обрезались, только не в текущем рисунке, а там куда они копируются.
mmax вне форума  
 
Непрочитано 19.01.2007, 20:38
#18
Vova

Engineer
 
Регистрация: 05.09.2003
New-York
Сообщений: 10,288


Кто-нить пробовал пост 7? Он ведь работающий
Vova вне форума  
 
Непрочитано 20.01.2007, 10:16
#19
den001

Инженер по автоматизации (строительство)
 
Регистрация: 05.05.2006
Люберцы
Сообщений: 241


Цитата:
Сообщение от mmax
Действительно, былобы очень замечательно, нарисовать замкнутый контур и скопировать все что внутри него, а примитивы которые вылезают за контур обрезались, только не в текущем рисунке, а там куда они копируются.
Ну, с помощью EXTRIM можно и так, только немного необычно. Нарисовать контур, обрезать EXTRIMом, скопировать в буфер, и нажать пару-тройку раз Отмену, пока все не вернется в исходное. А потом из буфера уже вставить. Коряво немного, но на безрыбье, как говорится...
__________________
Number
TextDuplicate
FieldToText
den001 вне форума  
 
Непрочитано 20.01.2007, 12:19
#20
forMA


 
Регистрация: 25.08.2005
Сообщений: 2,556


Цитата:
Действительно, былобы очень замечательно, нарисовать замкнутый контур и скопировать все что внутри него, а примитивы которые вылезают за контур обрезались, только не в текущем рисунке, а там куда они копируются.
Можно еще одним корявым и смешным способом это оуществить. Исходный фрагмент отчикать Break at Paint, оформить блоком и копировать с любым масштабом в любое место в любом количестве. При корректировке исходного фрагмента соответственно автоматически изменяются копируемые блоки.
__________________
Смысл существования AutoCAD-а в самом существовании AutoCAD-а.
forMA вне форума  
Ответ
Вернуться   Форум DWG.RU > Программное обеспечение > AutoCAD > Как быстро вырезать фрагмент чертежа??!!!

Размещение рекламы