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

Вернуться   Форум DWG.RU > Программное обеспечение > AutoCAD > Вычерчивание невидимых линий

Вычерчивание невидимых линий

Ответ
Поиск в этой теме
Непрочитано 04.03.2014, 19:35 #1
Вычерчивание невидимых линий
aTBepTKa
 
Регистрация: 16.11.2008
Сообщений: 55

Есть узел фермы (см. вложение). На нем часть фасонки, которая коряво показана красными штрихами, необходимо показать штриховой линией.
Можно разрывать линию и задавать нужный тип линии для получившейся ее части. Но такой способ не особо удобен. Чаще просто обрезаю часть линии и вручную дорисовываю ту же линию, задавая ей необходимый тип.
У кого какие методы вычерчивания подобных узлов?

Миниатюры
Нажмите на изображение для увеличения
Название: Снимок.PNG
Просмотров: 118
Размер:	31.2 Кб
ID:	123606  

Просмотров: 3411
 
Непрочитано 04.03.2014, 20:45
#2
Prorab kIROV


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


если не сильно заморачиваться, то можно подбирая масштаб пунктирной линии нарисовать невидимую))
Prorab kIROV вне форума  
 
Непрочитано 04.03.2014, 20:48
#3
Кулик Алексей aka kpblc
Moderator

LISP, C# (ACAD 200[9,12,13,14])
 
Регистрация: 25.08.2003
С.-Петербург
Сообщений: 40,431


Одно дело - рисовать в 2D, другое - в 3D.
__________________
Моя библиотека lisp-функций
---
Обращение ко мне - на "ты".
Все, что сказано - личное мнение.
Кулик Алексей aka kpblc вне форума  
 
Автор темы   Непрочитано 04.03.2014, 21:07
#4
aTBepTKa


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


Цитата:
Сообщение от Кулик Алексей aka kpblc Посмотреть сообщение
Одно дело - рисовать в 2D, другое - в 3D.
Работаю с 2D чертежом.
Не думаю что вычертить ферму в 3D будет быстрее, тем более когда параллельно с черчением идет конструирование и некоторые элементы могут меняться. Хотя это уже отдельная тема для разговора.

Может быть не совсем удачный пример привел. Есть деталь А (рисунок слева). В процессе проектирования появилась необходимость положить на нее деталь Б и показать под ней невидимые линии (рисунок справа). Как это лучше сделать?
Миниатюры
Нажмите на изображение для увеличения
Название: Снимок.PNG
Просмотров: 92
Размер:	20.4 Кб
ID:	123610  
aTBepTKa вне форума  
 
Непрочитано 04.03.2014, 23:30
1 | #5
Кулик Алексей aka kpblc
Moderator

LISP, C# (ACAD 200[9,12,13,14])
 
Регистрация: 25.08.2003
С.-Петербург
Сообщений: 40,431


Я бы разрывал имеющиеся линии и отрисовывал новые. Возможно, по ходу дела игрался бы со слоями.
__________________
Моя библиотека lisp-функций
---
Обращение ко мне - на "ты".
Все, что сказано - личное мнение.
Кулик Алексей aka kpblc вне форума  
 
Непрочитано 05.03.2014, 00:42
#6
Bull

Конструктор по сути (машиностроитель)
 
Регистрация: 10.10.2005
Набережные Челны (это где КамАЗ)
Сообщений: 11,391


Цитата:
Сообщение от Кулик Алексей aka kpblc Посмотреть сообщение
Я бы разрывал имеющиеся линии и отрисовывал новые. Возможно, по ходу дела игрался бы со слоями.
Можно не разрывать и рисовать, а разделять в точке ещё. В зависимости от ситуации делаю так или сяк. Стиль меняю слоями. Быстрые свойства вообще сильно ускоряют этот процесс.
__________________
Век живи, век учись - ...
Bull вне форума  
 
Непрочитано 05.03.2014, 06:33
1 | #7
Krieger

инженер (КМ)
 
Регистрация: 30.10.2004
Красноярск
Сообщений: 3,837


Пользуюсь лиспом:
Код:
[Выделить все]
;|
Функция Kr_Break_and_hide
*** Автор Морозов С.В. aka Krieger ***
Обрезает выбранный отрезок по двум точкам и вычерчивает на этом месте отрезок в слое layer
Пример:
(Kr_Break_and_hide "Невидимые")
|;
(defun Kr_Break_and_hide (layer / pt1 pt2 ent)
  (while (setq ent (Kr_entsel "\nВыберите линию для разрыва" '("LINE" "LWPOLYLINE" "XLINE" "RAY") nil))
    (if (setq pt1 (getpoint "\nНачальная точка скрываемого участка"))
      (if (setq pt2 (getpoint "\nКонечная точка скрываемого участка" pt1))     
	(progn
	  (setq pt1 (vlax-curve-getClosestPointTo (vlax-ename->vla-object ent) pt1)
	        pt2 (vlax-curve-getClosestPointTo (vlax-ename->vla-object ent) pt2))
		  (command "_break" ent pt1 pt2)
		  (entmake
		    (list
		    	'(0 . "LINE")
			'(100 . "AcDbEntity")
			 (cons 8 layer)
			 '(100 . "AcDbLine")
			 (cons 10 pt1)
			 (cons 11 pt2)
		    );list
		  );entmake
	  );progn
	);if
      );if
    );while
  (princ)
  );defun
__________________
Делай хорошо, плохо само получится.
Krieger вне форума  
 
Непрочитано 05.03.2014, 08:41
1 | #8
Сергей Богатов


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


Цитата:
Сообщение от aTBepTKa Посмотреть сообщение
Работаю с 2D чертежом.
Не думаю что вычертить ферму в 3D будет быстрее, тем более когда параллельно с черчением идет конструирование и некоторые элементы могут меняться. Хотя это уже отдельная тема для разговора.

Может быть не совсем удачный пример привел. Есть деталь А (рисунок слева). В процессе проектирования появилась необходимость положить на нее деталь Б и показать под ней невидимые линии (рисунок справа). Как это лучше сделать?
в 3D нарисованная деталь-> flatshot(настроив в нём тип и цвет линий в поле "Obscured lines"). Невидимые линии будут того цвета и типа как тебе надо...

----- добавлено через ~3 мин. -----
А ещё лучше глянуть в сторону не голого автокада, а вертикалок.
Точно знаю что в MEP невидимые линии на автомате получаются и в разрезах и при "обычном" черчении (естественно при использовании объектов MEP)
__________________
Я-проектировщик бывший проектировщик!
Сергей Богатов вне форума  
 
Непрочитано 05.03.2014, 10:36
#9
kacugu

начинающий инженер-гидротехник
 
Регистрация: 18.04.2010
Санкт-Петербург
Сообщений: 911


Цитата:
Сообщение от Krieger Посмотреть сообщение
Пользуюсь лиспом:
Пишет: no function definition: KR_ENTSEL
не подскажете как исправить?
нашел лисп KR_Entsel здесь http://forum.dwg.ru/showpost.php?p=859415&postcount=11
при загрузке лиспа пишет следующее
KR_entsel.lsp успешно загружено.
Команда: ; ошибка: синтаксическая ошибка

Последний раз редактировалось kacugu, 05.03.2014 в 10:46.
kacugu вне форума  
 
Непрочитано 05.03.2014, 10:59
#10
Хмурый


 
Регистрация: 29.10.2004
СПб
Сообщений: 16,379


все строки до defun следует закомментарить.
поставить ;- в начале каждой строки

а у меня не хватает аргументов
Цитата:
(Kr_Break_and_hide "Невидимые")
; error: too few arguments

Последний раз редактировалось Хмурый, 05.03.2014 в 11:05.
Хмурый вне форума  
 
Непрочитано 05.03.2014, 11:19
#11
kacugu

начинающий инженер-гидротехник
 
Регистрация: 18.04.2010
Санкт-Петербург
Сообщений: 911


Цитата:
Сообщение от Хмурый Посмотреть сообщение
; error: too few arguments
тоже было, но только при наборе команды Kr_Break_and_hide, то есть при неправильном наборе команды.
Закомментил строки. kr_entsel теперь загружается без ошибок. Но всё-равно
Команда: (Kr_Break_and_hide "Невидимые")
; ошибка: no function definition: KR_ENTSEL
Пробовал разные варианты: Слой "невидимые" и создавался/не создавался заранее, лисп kr_entsel и загружался/не загружался
kacugu вне форума  
 
Непрочитано 05.03.2014, 12:16
#12
Fogel

люблю мастерить
 
Регистрация: 21.01.2005
Челябинск
Сообщений: 10,371


Цитата:
Сообщение от aTBepTKa Посмотреть сообщение
Работаю с 2D чертежом.
Не думаю что вычертить ферму в 3D будет быстрее, тем более когда параллельно с черчением идет конструирование и некоторые элементы могут меняться.
А зря... И такие вопросы бы не возникали, и "косяки" с размерами, да и просто намного удобнее трехмерные объекты тягать... А уж о дальнейшем оформлении специализированые пакеты умеют весьма неплохо заботиться - сами модель на сборочники и спецификации раскидывают (или наоборот)
Fogel вне форума  
 
Автор темы   Непрочитано 05.03.2014, 16:26
#13
aTBepTKa


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


Спасибо за ответы.
Здесь ни раз упоминалось о вертикальных решениях. Есть ли на форуме живые люди которые разрабатывают КМ/КМД на основе трехмерной модели? Поделитесь опытом.
aTBepTKa вне форума  
 
Непрочитано 05.03.2014, 16:33
1 | #14
Кулик Алексей aka kpblc
Moderator

LISP, C# (ACAD 200[9,12,13,14])
 
Регистрация: 25.08.2003
С.-Петербург
Сообщений: 40,431


aTBepTKa, а ты паискам зыймися многа пализнава узнаеш
__________________
Моя библиотека lisp-функций
---
Обращение ко мне - на "ты".
Все, что сказано - личное мнение.
Кулик Алексей aka kpblc вне форума  
 
Непрочитано 05.03.2014, 16:59
3 | #15
Krieger

инженер (КМ)
 
Регистрация: 30.10.2004
Красноярск
Сообщений: 3,837


Извиняюсь, забыл Kr_entsel добавить.

Эта функция, нужно вводить в скобочках и с названием слоя в котором должен быть невидимый отрезок, например: (Kr_Break_and_hide "Невидимые").

Ничего там комментировать не нужно, все что нужно, там закомментировано.

Код:
[Выделить все]
;|
Функция Kr_Break_and_hide
*** Автор Морозов С.В. aka Krieger ***
Обрезает выбранный отрезок по двум точкам и вычерчивает на этом месте отрезок в слое layer
Пример:
(Kr_Break_and_hide "Невидимые")
|;
(vl-load-com)
(defun Kr_Break_and_hide (layer / pt1 pt2 ent)
  (while (setq ent (Kr_entsel "\nВыберите линию для разрыва" '("LINE" "LWPOLYLINE" "XLINE" "RAY") nil))
    (if (setq pt1 (getpoint "\nНачальная точка скрываемого участка"))
      (if (setq pt2 (getpoint "\nКонечная точка скрываемого участка" pt1))     
	(progn
	  (setq pt1 (vlax-curve-getClosestPointTo (vlax-ename->vla-object ent) pt1)
	        pt2 (vlax-curve-getClosestPointTo (vlax-ename->vla-object ent) pt2))
		  (command "_break" ent pt1 pt2)
		  (entmake
		    (list
		    	'(0 . "LINE")
			'(100 . "AcDbEntity")
			 (cons 8 layer)
			 '(100 . "AcDbLine")
			 (cons 10 pt1)
			 (cons 11 pt2)
		    );list
		  );entmake
	  );progn
	);if
      );if
    );while
  (princ)
  );defun

;|Функция Kr_entsel
*** Автор Морозов С.В. aka Krieger ***
Еденичный выбор объекта, замена функции entsel
Возвращает entity name выбранного примитива или nil, точку указки запоминает в переменной LASTPOINT
Параметры:
promt - предложение выбрать объект (string)
filter - фильтр объектов для выбора вида '("LINE" "LWPOLYLINE")
entlist - список примитивов которые не надо выбирать (либо список entity name, либо PICKSET)

Примеры:
(Kr_entsel "\nВыберите объекты" '("LINE" "LWPOLYLINE") nil)
(Kr_entsel "\nВыберите объекты" nil nil)
(setq aa nil) (Kr_entsel "\nВыберите объекты" '("LINE" "LWPOLYLINE") (while (setq a (car (entsel))) (setq aa (append aa (list a)))))
(Kr_entsel "\nВыберите объекты" '("LINE" "LWPOLYLINE") (ssget))

|;

(defun Kr_entsel (promt filter entlist / key n newentlist ent_point promt)
  
  (setq key T n 0 newentlist nil)
  (if (eq (type entlist) 'PICKSET)
    (progn
    	(while (setq a (ssname entlist n)) (setq newentlist (append newentlist (list a)) n (1+ n)))
    	(setq entlist newentlist)
    );progn
   );if
    (while key
    	(if (or (setq ent_point (entsel promt)) (= (getvar "ERRNO") 7))
	  	(if (or (eq (type ent_point) 'LIST) (not ent_point))
		  (if ent_point
		    (if (member (setq ent (car ent_point)) entlist)
		      (princ "\nПримитив уже выбран")
		      (if filter
			      (if (not (member (cdr (assoc 0 (entget ent))) filter))
				(progn (setq str "\nНе верный выбор, выберите: ")
				  (princ (substr (setq str (foreach n filter (setq str (strcat str n ", ")))) 1 (- (strlen str) 2)))
				);progn
				(setq key nil)
			      );if
				(setq key nil)
			);if
		    );if
		    (setq key T)
		  );if
	    	(setq key nil)
	    );if
	  (setq key nil)
      	);if
     );while
  (if (eq (type ent_point) 'LIST)
    (progn (setvar "LASTPOINT" (cadr ent_point)) ent)
    ent_point
  );if
);defun
__________________
Делай хорошо, плохо само получится.
Krieger вне форума  
 
Непрочитано 05.03.2014, 17:20
#16
cater


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


Цитата:
Сообщение от Кулик Алексей aka kpblc Посмотреть сообщение
aTBepTKa, а ты паискам зыймися многа пализнава узнаеш
А его на Гугле забанили.
cater вне форума  
 
Непрочитано 06.03.2014, 08:47
#17
Хмурый


 
Регистрация: 29.10.2004
СПб
Сообщений: 16,379


Цитата:
Сообщение от Krieger Посмотреть сообщение
Ничего там комментировать не нужно, все что нужно, там закомментировано.
Вчера из кода по каким-то причинам не скопировались вертикальные палки комментариев и, видать, не только у меня. Сегодня- все в порядке
Хмурый вне форума  
 
Непрочитано 06.03.2014, 08:59
#18
Krieger

инженер (КМ)
 
Регистрация: 30.10.2004
Красноярск
Сообщений: 3,837


Все работает? Разрываются отрезки?
__________________
Делай хорошо, плохо само получится.
Krieger вне форума  
 
Непрочитано 06.03.2014, 09:02
#19
Хмурый


 
Регистрация: 29.10.2004
СПб
Сообщений: 16,379


Krieger, вариант из #15 работает. AutoCAD 2011 Eng
Хмурый вне форума  
 
Непрочитано 06.03.2014, 09:06
#20
kacugu

начинающий инженер-гидротехник
 
Регистрация: 18.04.2010
Санкт-Петербург
Сообщений: 911


Цитата:
Сообщение от Krieger Посмотреть сообщение
Все работает? Разрываются отрезки?
Работает из #15. Autocad 2014 sp1 rus
kacugu вне форума  
Ответ
Вернуться   Форум DWG.RU > Программное обеспечение > AutoCAD > Вычерчивание невидимых линий

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Как реализовать такое отображение невидимых линий в AutoCAD? discovery AutoCAD 3 23.04.2012 13:42
Автоматическое изменение маштаба невидимых линий в Mechanical Desktop bambrenus Вертикальные решения на базе AutoCAD 3 03.12.2009 21:17
настройки невидимых линий Дмитрий Брайт AutoCAD 6 20.09.2009 16:23
Скрытие невидимых линий и сетки при выводе трехмерной модели ivgo AutoCAD 3 18.02.2007 21:39
AutoCad2000 - печать невидимых линий Vladimir AutoCAD 5 17.09.2004 16:18