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

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

Помогите закрепить новый элемент ко всем старым элементам.

Ответ
Поиск в этой теме
Непрочитано 02.04.2015, 21:13 #1
Помогите закрепить новый элемент ко всем старым элементам.
BANGER
 
Регистрация: 02.04.2015
Сообщений: 10

Доброго времени суток. Ребята есть одна проблемка. Буду показывать на картинках.

1. Есть вот такой чертеж (электронная плата).

[IMG]http://***********/55a9479a.png[/IMG]

2. Видите синие кружочки? Тип кружков - полилиния.
3. У меня есть вот такой элемент (белый кружок с осями)

[IMG]http://***********/affe892e.jpg[/IMG]

Задание! Мне надо на всем моем чертеже добавить в каждый синий кружок по одному белому кругу+оси.

Должно получится так

[IMG]http://***********/f09c6c9b.png[/IMG]


Примечание. Допустим таких синих кружков у меня 1200 штук. Функция "Копировать выбранные" НЕ ПРЕДЛОГАТЬ. Спасибо.

Последний раз редактировалось Кулик Алексей aka kpblc, 02.04.2015 в 23:39.
Просмотров: 5697
 
Непрочитано 02.04.2015, 22:51
#2
sbi


 
Регистрация: 27.04.2008
SPB
Сообщений: 3,285
Отправить сообщение для sbi с помощью Skype™


Цитата:
Сообщение от BANGER Посмотреть сообщение
Функция "Копировать выбранные" НЕ ПРЕДЛОГАТЬ.
А чем Вы полагаете ?
__________________
С уважением sbi
sbi вне форума  
 
Автор темы   Непрочитано 02.04.2015, 23:43
#3
BANGER


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


Цитата:
Сообщение от sbi Посмотреть сообщение
А чем Вы полагаете ?
Учесть что у меня эти синие кружки расположены в сетке 2.5 Следовательно можно сделать массив моих белых кружков по всей плате, например 40 столбцов и 25 строк. Некоторые белые кружки сойдутся на синих, а как удалить лишние белые кружки +)))
BANGER вне форума  
 
Непрочитано 03.04.2015, 00:28
#4
Сергей812


 
Регистрация: 10.08.2013
Сообщений: 11,499


Offtop: 40 столбцов х 25 строк=1000шт... а синих кружков - 1200... и вы еще рассчитываете на лишние белые кружочки?)

Контактные площадки у вас - толстые полилинии или внутри еще заливка? И рисовалось чем - примитивом "_circle" (круг)? На плате этими примитивами обозначены только контактные площадки? И судя по первому рисунку - площадки нескольких размеров? А диаметр разметки под сверление - не зависит от размеров площадки или пропорционален?
Сергей812 вне форума  
 
Непрочитано 03.04.2015, 07:26
#5
Krieger

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


Надо смотреть файл и набросать программку. Если бы все синие кружочки были сделаны блоком (как и полагается для повторяющихся объектов), то проблема решилась бы за пару секунд.
__________________
Делай хорошо, плохо само получится.
Krieger вне форума  
 
Автор темы   Непрочитано 03.04.2015, 09:23
#6
BANGER


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


Цитата:
Сообщение от Сергей812 Посмотреть сообщение
Offtop: 40 столбцов х 25 строк=1000шт... а синих кружков - 1200... и вы еще рассчитываете на лишние белые кружочки?)

Контактные площадки у вас - толстые полилинии или внутри еще заливка? И рисовалось чем - примитивом "_circle" (круг)? На плате этими примитивами обозначены только контактные площадки? И судя по первому рисунку - площадки нескольких размеров? А диаметр разметки под сверление - не зависит от размеров площадки или пропорционален?
это были просто два разных примера. Про 1200 штук и про 40 на 25.

Могу скинуть файл. Дайте почту. И помогите пожалуйста. Очень много времени уходит на "копирование"
BANGER вне форума  
 
Непрочитано 03.04.2015, 09:25
#7
Bull

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


Цитата:
Сообщение от BANGER Посмотреть сообщение
Могу скинуть файл. Дайте почту.
Не надо на почту, выкладывайте прямо в сообщение.
__________________
Век живи, век учись - ...
Bull вне форума  
 
Автор темы   Непрочитано 03.04.2015, 09:27
#8
BANGER


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


Цитата:
Сообщение от BANGER Посмотреть сообщение
контактные площадки? И судя по первому рисунку - площадки нескольких размеров? А диаметр разметки под сверление - не зависит от размеров площадки или пропорционален?
Да, есть разные (круглые) контактные площадки. Но на этом чертеже мы показываем условно. А значит примитивный белый круг не зависит от размеров данной площадки и от реально размера нужного отверстия. ПОКАЗЫВАЕТСЯ условно.
BANGER вне форума  
 
Автор темы   Непрочитано 03.04.2015, 09:33
#9
BANGER


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


На верхнем чертеже - плата без примитивных кругов.

На нижнем чертеже (масштаб 2.5к1)- плата с добавленными белыми кругами (как пример что должно быть)

АВтокад 2012 русс
Вложения
Тип файла: dwg
DWG 2010
Печатная плата.dwg (317.7 Кб, 1221 просмотров)
BANGER вне форума  
 
Непрочитано 03.04.2015, 10:45
#10
Сергей812


 
Регистрация: 10.08.2013
Сообщений: 11,499


Вы все сделали, чтобы усложнить себе жизнь) Контактные площадки не кругом или блоком сделаны, а полилинией. Причем все - и площадки, и печатные проводники-нарисованы в одном слое.

----- добавлено через ~8 мин. -----
Как идентифицировать - что на слое "НИЖНИЙ" контактная площадка, а что проводник? Пока вижу только один фактор - ширина полилиний 0,5 у площадок, 0,33 - у проводников - так будет всегда? Нет, не всегда-вижу и 0,9.

Последний раз редактировалось Сергей812, 03.04.2015 в 10:55.
Сергей812 вне форума  
 
Непрочитано 03.04.2015, 11:00
#11
Krieger

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


Конкретно для это файла накидал вот такое:
Код:
[Выделить все]
;
(defun c:kr_circledraw (/ ss n list_name pr pt1 pt2 pt3)
(setq ss (ssget '((0 . "LWPOLYLINE") (42 . 1)))
      n 0
      list_name nil)
(repeat (sslength ss) (progn
			(setq list_name (append list_name (list (ssname ss n)))
			      n (1+ n))
			
			))
(foreach name list_name
    (progn
	(setq pr (entget name)
	      pt1 (assoc 10 pr)
	      pr1 (vl-remove pt1 pr)
	      pt1 (cdr pt1)
	      pt2 (cdr (assoc 10 pr1))
	      pt3 (polar pt1 (angle pt1 pt2) (/ (distance pt1 pt2) 2)))
      (if (>= (distance pt1 pt2) 0.5)
	(progn
      	(entmake
	  (list
		'(0 . "INSERT")
		'(8 . "0")
		'(100 . "AcDbBlockReference")
		'(2 . "circle")
		(cons 10 pt3)
		);list
	  );entmake
	(entdel name)
	);progn
	);if
      );progn
  );foreach
);defun
Ввести команду kr_circledraw и выделить всю печатную плату. В файле должен быть блок "circle". Кружки у вас есть не только по концам дорожек, но и в углах причем также из полилиний, отличил их просто расстоянием между первой и второй точкой полилинии.

Чтобы причесать код, нужно конкретезировать задачу и приводить в порядок саму плату.
Вложения
Тип файла: dwg
DWG 2010
Печатная плата.dwg (344.4 Кб, 1092 просмотров)
__________________
Делай хорошо, плохо само получится.
Krieger вне форума  
 
Автор темы   Непрочитано 03.04.2015, 11:03
#12
BANGER


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


Цитата:
Сообщение от Сергей812 Посмотреть сообщение
Вы все сделали, чтобы усложнить себе жизнь) Контактные площадки не кругом или блоком сделаны, а полилинией. Причем все - и площадки, и печатные проводники-нарисованы в одном слое.

----- добавлено через ~8 мин. -----
Как идентифицировать - что на слое "НИЖНИЙ" контактная площадка, а что проводник? Пока вижу только один фактор - ширина полилиний 0,5 у площадок, 0,33 - у проводников - так будет всегда? Нет, не всегда-вижу и 0,9.

Я ничего себе не усложнял. В таком виде я получил ЭКСПОРТ из программы DIPTRACE. Это она (программа DIPTRACE) оформила все проводники и переходные отверстия в единую полилинию.

----- добавлено через ~4 мин. -----
Цитата:
Сообщение от Krieger Посмотреть сообщение
Конкретно для это файла накидал вот такое:
Код:
[Выделить все]
;
(defun c:kr_circledraw (/ ss n list_name pr pt1 pt2 pt3)
(setq ss (ssget '((0 . "LWPOLYLINE") (42 . 1)))
      n 0
      list_name nil)
(repeat (sslength ss) (progn
			(setq list_name (append list_name (list (ssname ss n)))
			      n (1+ n))
			
			))
(foreach name list_name
    (progn
	(setq pr (entget name)
	      pt1 (assoc 10 pr)
	      pr1 (vl-remove pt1 pr)
	      pt1 (cdr pt1)
	      pt2 (cdr (assoc 10 pr1))
	      pt3 (polar pt1 (angle pt1 pt2) (/ (distance pt1 pt2) 2)))
      (if (>= (distance pt1 pt2) 0.5)
	(progn
      	(entmake
	  (list
		'(0 . "INSERT")
		'(8 . "0")
		'(100 . "AcDbBlockReference")
		'(2 . "circle")
		(cons 10 pt3)
		);list
	  );entmake
	(entdel name)
	);progn
	);if
      );progn
  );foreach
);defun
Ввести команду kr_circledraw и выделить всю печатную плату. В файле должен быть блок "circle". Кружки у вас есть не только по концам дорожек, но и в углах причем также из полилиний, отличил их просто расстоянием между первой и второй точкой полилинии.

Чтобы причесать код, нужно конкретезировать задачу и приводить в порядок саму плату.
Мне нравится ваша помощь к моему делу.

Но я никогда не имел дела с кодами и скриптами. Для чайника поясните куда вставлять сей код. И как будет меняться код если я захочу подгрузить новую плату.

----- добавлено через ~6 мин. -----
И еще у меня русский автокад) Будьте добры говорить русскоязычные команды)
BANGER вне форума  
 
Непрочитано 03.04.2015, 11:16
#13
Bull

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


Цитата:
Сообщение от BANGER Посмотреть сообщение
И еще у меня русский автокад) Будьте добры говорить русскоязычные команды)
просто добавь воды "._" перед названиями команд.
__________________
Век живи, век учись - ...
Bull вне форума  
 
Непрочитано 03.04.2015, 11:18
1 | #14
Krieger

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


Цитата:
Сообщение от BANGER Посмотреть сообщение
Но я никогда не имел дела с кодами и скриптами. Для чайника поясните куда вставлять сей код.
http://dwg.ru/pub/9

Цитата:
Сообщение от BANGER Посмотреть сообщение
И как будет меняться код если я захочу подгрузить новую плату.
Циферку в этой строчке возможно надо будет менять, если масштаб платы будет отличаться от того что в примере. Ну и блок перерисовывать.
Код:
[Выделить все]
(>= (distance pt1 pt2) 0.5)
Код:
[Выделить все]
И еще у меня русский автокад) Будьте добры говорить русскоязычные команды)
kr_circledraw - это моя команда, как я её придумал так и надо вводить.
__________________
Делай хорошо, плохо само получится.
Krieger вне форума  
 
Автор темы   Непрочитано 03.04.2015, 11:20
#15
BANGER


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


Цитата:
Сообщение от Bull Посмотреть сообщение
просто добавь воды "._" перед названиями команд.
добавляю "точку и подчеркивание " перед командой kr_circledraw. Пишет "неизвестная команда"

Да я тупой)

Понял про мою команду. Буду читать ссылку на форум)
BANGER вне форума  
 
Непрочитано 03.04.2015, 11:23
#16
Bull

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


Цитата:
Сообщение от BANGER Посмотреть сообщение
добавляю "точку и подчеркивание " перед командой kr_circledraw. Пишет "неизвестная команда"
Не, я думал, что сам код не читается. Перед "kr_circledraw" ничего не надо
__________________
Век живи, век учись - ...
Bull вне форума  
 
Автор темы   Непрочитано 03.04.2015, 13:35
#17
BANGER


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


Цитата:
Сообщение от Krieger Посмотреть сообщение
kr_circledraw
ДА ПРОСТЯТ МЕНЯ МОДЕРАТОРЫ ЗА капслок. СПАСИБО тебе о большой человек! Такая магия. Буду пробовать на других платах.

Есть одно НО. Там у меня на плате могут быть разные диаметры отверстий. В основном такие как ты вставлял, но есть и пошире. Скрипт вставляет и туда мой блок. Эм... Надо уставить туда другой блок "cirkle2".
BANGER вне форума  
 
Непрочитано 03.04.2015, 13:48
#18
Krieger

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


Цитата:
Сообщение от BANGER Посмотреть сообщение
Надо уставить туда другой блок "cirkle2".
Что бы вставлять другой блок надо поменять эту строку:
'(2 . "circle") на '(2 . "cirkle2")

Если этот блок такой же, только побольше, то проще выделить их все, да и поменять масштаб в свойствах.
__________________
Делай хорошо, плохо само получится.
Krieger вне форума  
 
Автор темы   Непрочитано 03.04.2015, 13:59
#19
BANGER


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


Цитата:
Сообщение от Krieger Посмотреть сообщение
Что бы вставлять другой блок надо поменять эту строку:
'(2 . "circle") на '(2 . "cirkle2")

Если этот блок такой же, только побольше, то проще выделить их все, да и поменять масштаб в свойствах.
Чуть чуть не так.. Уважаемый человек, гляньте на картинку. Видите простой кружок соответствует малому кругу (полилиния), а кружок с штриховкой --> большому кругу (полилиния). В твоем скрипте блок "circle" @залазит@ на все кружки_полилинии.

[IMG]http://***********/ca69ecec.png[/IMG]

В идеале надо создать два, три, четыре разных блока "circle", чтобы каждый блок @залазил@ на свою полилинию.

Вопрос к тебе надо в скрипте определить что "circle" лезь на малый круг; "circle2" лезь на средний круг; "circle3" лезь на самый большой круг ))))

Сори за мою "инженерную переписку" +))
BANGER вне форума  
 
Непрочитано 03.04.2015, 14:05
#20
Krieger

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


Понятно, это осуществимо. С тебя блоки и размеры кружочков на которые они должны замещаться.
__________________
Делай хорошо, плохо само получится.
Krieger вне форума  
 
Автор темы   Непрочитано 03.04.2015, 14:24
#21
BANGER


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


Цитата:
Сообщение от Krieger Посмотреть сообщение
Понятно, это осуществимо. С тебя блоки и размеры кружочков на которые они должны замещаться.
Масштаб платы 1-1. Всё остальное на фото.

[IMG]http://***********/5ee3c7b1.png[/IMG]

[IMG]http://***********/69bf24b2.png[/IMG]

Последний раз редактировалось Кулик Алексей aka kpblc, 03.04.2015 в 14:35.
BANGER вне форума  
 
Непрочитано 04.04.2015, 11:44
#22
VitalyAF


 
Регистрация: 19.07.2005
Россия
Сообщений: 3,288


Цитата:
В таком виде я получил ЭКСПОРТ из программы DIPTRACE
Я уверен, что в исходнике всё это можно сделать с меньшими затратами, подредактировав библиотеку.
Или экспортните в Eagle, там великолепный экcпорт в DWG...
VitalyAF вне форума  
 
Непрочитано 04.04.2015, 16:16
#23
Krieger

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


Вместо кружочков с диаметром от 0.45 до 0.6 вставляются блоки circle1, а вместо кружочков с диаметром от 0.6 до 1.1 вставляются блоки circle2. Совсем больших кружочков я на плате не нашел.
Код:
[Выделить все]
(defun c:kr_circledraw (/ ss n list_name pr pt1 pt2 pt3)
(setq ss (ssget '((0 . "LWPOLYLINE") (42 . 1)))
      n 0
      list_name nil)
(repeat (sslength ss) (progn
			(setq list_name (append list_name (list (ssname ss n)))
			      n (1+ n))
			
			))
(foreach name list_name
    (progn
	(setq pr (entget name)
	      pt1 (assoc 10 pr)
	      pr1 (vl-remove pt1 pr)
	      pt1 (cdr pt1)
	      pt2 (cdr (assoc 10 pr1))
	      pt3 (polar pt1 (angle pt1 pt2) (/ (distance pt1 pt2) 2)))
      
      (cond
	((and (>= (distance pt1 pt2) 0.45) (< (distance pt1 pt2) 0.6))
		(entmake
		  (list
			'(0 . "INSERT")
			'(8 . "0")
			'(100 . "AcDbBlockReference")
			'(2 . "circle1")
			(cons 10 pt3)
			);list
		  );entmake
		(entdel name));
	((and (>= (distance pt1 pt2) 0.6) (< (distance pt1 pt2) 1.1))
		(entmake
		  (list
			'(0 . "INSERT")
			'(8 . "0")
			'(100 . "AcDbBlockReference")
			'(2 . "circle2")
			(cons 10 pt3)
			);list
		  );entmake
		(entdel name));
	);cond

      
      );progn
  );foreach
)
Вложения
Тип файла: dwg
DWG 2004
Печатная плата.dwg (368.7 Кб, 188 просмотров)
__________________
Делай хорошо, плохо само получится.
Krieger вне форума  
Ответ
Вернуться   Форум DWG.RU > Программное обеспечение > AutoCAD > Помогите закрепить новый элемент ко всем старым элементам.



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Расчет пространственных стержневых систем и наличие шарниров в расчетных схемах Jenec Лира / Лира-САПР 17 27.09.2013 22:23
Помощь по Лире Серега М Лира / Лира-САПР 52 28.05.2007 02:47