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

Вернуться   Форум DWG.RU > Программное обеспечение > AutoCAD > Проблема с Leader при Mirror (НАЕЗД!)

Проблема с Leader при Mirror (НАЕЗД!)

Ответ
Поиск в этой теме
Непрочитано 03.03.2004, 13:49 #1
Проблема с Leader при Mirror (НАЕЗД!)
андрей1
 
инженер ПГС
 
Калининград
Регистрация: 12.09.2003
Сообщений: 53

Никак не могу решить проблему начиная с 14 Акада (в 12 ее не было)
При зеркальном копировании (Mirror), полка выноски полученного leader'а "наезжает на текст", поэтому приходиться, перед тем как зеркалить, взрывать. Причем, этого наезда не происходит если переменная Mirrtext = 1, или если задать расстояние между текстом и размерной линией = 0

Подскажите, кто знает! Спасибо.
Просмотров: 4007
 
Непрочитано 03.03.2004, 17:11
#2
muxa

проектирование мостов
 
Регистрация: 20.01.2004
Spb
Сообщений: 4


у меня бывало тоже самое с выносом размера из размерной линии, можно решить проблему таким способом, наверное дурацким, но работает стопудов! войти в режим редактирования выноски и после текста (размера) написать \P
Простенько и безвкусно, но работает, потому, что Акад эти символы распознает как переход во вторую строку и следовательно смещает вверх предыдущую.
muxa вне форума  
 
Автор темы   Непрочитано 03.03.2004, 19:16
#3
андрей1

инженер ПГС
 
Регистрация: 12.09.2003
Калининград
Сообщений: 53


Спасибо, но если количество выносок не позволяет врукопашную их редактировать? К тому же предложенный способ поднимает текст, а полка так и остается "задраной".
андрей1 вне форума  
 
Непрочитано 04.03.2004, 10:52
#4
Grinzaid

Архитектор
 
Регистрация: 14.10.2003
Израиль
Сообщений: 365
<phrase 1=


Долго игрался с проклятущим лидером, и лидер заработал. Я определил подстиль для лидера и Text offset задал = 0, тогда как в основном стиле оставил >0. Лидер и до и после Mirror выглядит нормально, т.е. текст не прикасается к линии и всегда на равном расстоянии от неё вне зависимости от Mirror. Недоработка, однако. Не должно быть такого, а есть. Ну и чёрт с ним.
__________________
С уважением,
Влад Гринзайд.
Grinzaid вне форума  
 
Автор темы   Непрочитано 04.03.2004, 21:02
#5
андрей1

инженер ПГС
 
Регистрация: 12.09.2003
Калининград
Сообщений: 53


Grinzaid, дай-ка я Вас обниму!)))
андрей1 вне форума  
 
Автор темы   Непрочитано 04.03.2004, 21:58
#6
андрей1

инженер ПГС
 
Регистрация: 12.09.2003
Калининград
Сообщений: 53


Нет, рано обрадовался. Делаю подстиль: New/Use for...Leader & Tolerances выставляю ему текст офсет =0. Так лидеры и рисуются с текстом, прилеплеными к полке. Что я не так сделал? :shock:
андрей1 вне форума  
 
Непрочитано 05.03.2004, 12:32
#7
{Smirnoff}

Инженер по системам безопасности
 
Регистрация: 23.11.2003
Рига
Сообщений: 1,099


Вообще АКАДовский лидер, вещь страшно неудобная. Я тут писал для одного товарища специфический лидер для вентиляционных труб. Гляньте сам принцип, поскольку это можно переписать и под "классический" вариант. Сначала вводим тип трубы, потом высоту, затем ставим отметку там где начинаеться указатель, двигаем куда надо текст и после вставки указатель приклепляеться к нужному концу.
Код:
[Выделить все]
(defun c:pled (/
	       nabor
	       temp_first_line
	       temp_secong_line
	       current_list
	       temp_symb_scale
	       start_point
	       old_color
	       temp_circle
	       old_osmode
	       minpt
	       maxpt
	       hor_min
	       hor_max
	       print_first_line
	       )		
  (setvar "cmdecho" 0)
  (terpri)
  (princ "*** PIPE LIADER, © Alexander Smirnov, Riga, 2003, e-mail: [email protected] ***")
  (terpri)
  (vl-load-com)
  (setq acad_application (vlax-get-acad-object))
  (setq active_document (vla-get-activedocument acad_application))
  (setq model_space (vla-get-modelspace active_document))
  (if (not symb_scale) (setq symb_scale 250))
  (setq temp_symb_scale symb_scale)
  (setq symb_scale (getreal(strcat "Enter text size <"(rtos symb_scale)">: ")))
  (if (eq nil symb_scale)(setq symb_scale temp_symb_scale))
  (while T
  (if (not first_line)(setq first_line "D125B6"))
  (setq temp_first_line first_line)
  (setq first_line (getstring (strcat "Enter Pipe Type <"first_line">: ")))
  (if (= first_line "")(setq first_line temp_first_line))
  (terpri)
  (if (not second_line)(setq second_line "2.400"))
  (setq temp_second_line second_line)
  (setq second_line (getstring (strcat "Enter Height (m) <"second_line"> : ")))
  (if (= second_line "")(setq second_line temp_second_line))
  (initget 1)
  (terpri)
  (setq start_point (getpoint "Specify point for leader "))
  (setq old_color (getvar "cecolor"))
  (setvar "cecolor" "red")
  (command "_.circle" start_point (/ symb_scale 5))
  (setq temp_circle (entlast))
  (setvar "cecolor" old_color)
  (terpri)

(if (equal nil (tblsearch "block" "asmi_pipe_leader"))
    (progn

(setq nabor (ssadd))
(entmake '((0 . "ATTDEF")  (5 . "332") (100 . "AcDbEntity") (67 . 0) (100 . "AcDbText") (10 0.0 1.5 0.0) (40 . 1.0) (1 . "d125B6") (50 . 0.0) 
(41 . 0.7) (51 . 0.0) (71 . 0) (72 . 0) (11 0.0 0.0 0.0) (210 0.0 
0.0 1.0) (100 . "AcDbAttributeDefinition") (3 . "") (2 . "PIPE:") (70 . 0) (73 . 
0) (74 . 0)(7 . "Standard")(8 . "0")(62 . 0))

	 )
(setq current_list (entget (entlast)))
(setq current_list (subst (cons 7 (getvar "textstyle")) (assoc 7 current_list) current_list))
(entmod current_list)
(ssadd (entlast) nabor)

(entmake '( (0 . "ATTDEF")  (5 . "333") (100 . "AcDbEntity") (67 . 0)  (100 . "AcDbText") (10 0.848986 0.0 0.0) (40 . 1.0) (1 . "1.100") (50 . 
0.0) (41 . 0.7) (51 . 0.0)(71 . 0) (72 . 0) (11 0.0 0.0 0.0) (210 
0.0 0.0 1.0) (100 . "AcDbAttributeDefinition") (3 . "") (2 . "HEIGHT:") (70 . 0) 
(73 . 0) (74 . 0)(7 . "Standard")(8 . "0")(62 . 0))
	 )
(setq current_list (entget (entlast)))
(setq current_list (subst (cons 7 (getvar "textstyle")) (assoc 7 current_list) current_list))
(entmod current_list)
(ssadd (entlast) nabor)

(entmake ' ( (0 . "LWPOLYLINE")  (5 . "344") (100 . "AcDbEntity") (67 . 0)  (100 . "AcDbPolyline") (90 . 3) (70 . 1) (43 . 0.0) (38 . 
0.0) (39 . 0.0) (10 0.362933 0.0) (40 . 0.0) (41 . 0.0) (42 . 0.0) (10 0.726851 
0.842338) (40 . 0.0) (41 . 0.0) (42 . 0.0) (10 -0.000986048 0.842338) (40 . 
0.0) (41 . 0.0) (42 . 0.0) (210 0.0 0.0 1.0)(8 . "0")(62 . 0))

	 )
(ssadd (entlast) nabor)
(command "_.block" "asmi_pipe_leader" "0,0" nabor "")
))
     (if (or(= (ascii first_line) 100)(= (ascii first_line) 68))
      (setq print_first_line (strcat "%%c" (substr first_line 2)))(setq print_first_line first_line)
      );end if
(command "_insert" "asmi_pipe_leader" "_s" symb_scale  "0,0" "0" print_first_line second_line)
(command "_.copybase" "0,0" (entlast)"")
(command "_.erase" (entlast) "")
(command "_.pasteclip" pause)

  (setq old_osmode (getvar "osmode"))
  (setvar "osmode" 0)
(vla-getboundingbox(vlax-ename->vla-object(entlast)) 'minpoint 'maxpoint)
(setq minpt(vlax-safearray->list minpoint))
(setq maxpt(vlax-safearray->list maxpoint))
(setq hor_min(list(car minpt)(+(cadr minpt)(/(-(cadr maxpt)(cadr minpt))2))))
(setq hor_max(list(car maxpt)(+(cadr minpt)(/(-(cadr maxpt)(cadr minpt))2))))
(command "_.line" hor_min hor_max "")
(if (<=(car start_point)(+(car minpt)(/(-(car maxpt)(car minpt))2)))
  (command "_.line" start_point hor_min "")
  (command "_.line" start_point hor_max "")
  );end if
  (entdel temp_circle)
(setvar "osmode" old_osmode)
    )
  );end pled
{Smirnoff} вне форума  
 
Автор темы   Непрочитано 06.03.2004, 14:37
#8
андрей1

инженер ПГС
 
Регистрация: 12.09.2003
Калининград
Сообщений: 53


К сожалению (а может к счастью))) не силен я в этом...Но, все равно кому ньть пригодится!
андрей1 вне форума  
 
Непрочитано 06.03.2004, 14:53
#9
{Smirnoff}

Инженер по системам безопасности
 
Регистрация: 23.11.2003
Рига
Сообщений: 1,099


Так ничего понимать и не надо. Грузишь прогу, набираешь в командной строке PLED и она работает. Я просто хотел узнать мнение по поводу создания лидера которое реализованно в вышеописанном (())).
{Smirnoff} вне форума  
 
Непрочитано 06.03.2004, 15:46
#10
vk

сисадмин
 
Регистрация: 26.08.2003
Самара
Сообщений: 1,022
<phrase 1=


>Fantomas
Ну ежли уж entmake'ить, так сразу то что надо. А какой смысл сначала создать к примеру атрибут с некоторыми свойствами, а потом поменять одно из них (стиль текста), на что ушло целых три строки программы. Два раза. Группу 5 dxf тоже прописывать не нужно, она создается автоматически.
(if (equal nil ... - проще (if (null ... или (if (not ... Это же Лисп, все-таки!

А лидер акадовский вещица довольно удобная, если правильно ее использовать. Особенно с блоками. Всегда можно прикрепить блок к лидеру. Можно с необходимым смещением. Для этого в Экспрессах имеется парочка команд. И не надо взрывать.
vk вне форума  
 
Непрочитано 06.03.2004, 17:20
#11
{Smirnoff}

Инженер по системам безопасности
 
Регистрация: 23.11.2003
Рига
Сообщений: 1,099


Ну во первых, это писалось примерно через 5 месяце после того как я впервые написал defun (это насчет (if (null) и на тот момент это было для меня достаточно сложной прогой. Но код рабочий и нет смысла его переделывать. Хотя конечно такую ерунду подправить можно.

Насчет:
Цитата:
Ну ежли уж entmake'ить, так сразу то что надо. А какой смысл сначала создать к примеру атрибут с некоторыми свойствами, а потом поменять одно из них (стиль текста), на что ушло целых три строки программы. Два раза. Группу 5 dxf тоже прописывать не нужно, она создается автоматически.
Тут вы батенька не правы в одном конкретно взятом случае. Если не указывать группу (7 . ) блок с атрибутами entmake'ится всегда не стекущим текстовым стилем, а со Standard, хоть ты убейся. А человек для которого я это писал просил чтобы стиль был текущим, вот и пришлсь "подправлять" для каждого атрибута.

Насчет 5-й группы конечно правильно, сейчас сам смотрю что вроде должна мешать, все таки метка примитива. Но на практике при создании примитива она игнорируется, и создаеться новая.

Сейчас думаю, на треть короче бы все было
{Smirnoff} вне форума  
 
Непрочитано 06.03.2004, 18:17
#12
vk

сисадмин
 
Регистрация: 26.08.2003
Самара
Сообщений: 1,022
<phrase 1=


Цитата:
Тут вы батенька не правы в одном конкретно взятом случае
А так:
Код:
[Выделить все]
(entmake (list '(0 . "ATTDEF")  '(100 . "AcDbEntity") '(67 . 0)
......... 
'(74 . 0) (cons 7  (getvar "textstyle")) '(8 . "0") '(62 . 0)))
Торопиться вредно :roll:
vk вне форума  
 
Непрочитано 06.03.2004, 21:11
#13
{Smirnoff}

Инженер по системам безопасности
 
Регистрация: 23.11.2003
Рига
Сообщений: 1,099


Цитата:
(cons 7 (getvar "textstyle"))
Соглашусь. Тогда по неопытности пытался (7 . (getvar "textstyle")), соответственно получал Error Bad DXF Group. А теперь как то даже не подумал, вспомнилось как я с этим ^*$##$ и написал свои объяснения на тот момент. Спасибо! Понемногу учите.

Я же говорю "на треть короче" Но тогда эта функция являлась небольшим предметом моей гордости.
{Smirnoff} вне форума  
Ответ
Вернуться   Форум DWG.RU > Программное обеспечение > AutoCAD > Проблема с Leader при Mirror (НАЕЗД!)

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