Реклама / ООО «ИЗОЛПРОЕКТ» / ИНН: 7725566484 | ERID: 2Vtzqx6kV7S
IPB IPB
Проектирование, монтаж, наладка, сервис


Здравствуйте, гость ( Вход | Регистрация )

- Стандарт НП «АВОК» 7.11-2024
«Рекомендации по проектированию инженерных систем
дошкольных образовательных организаций»

АВОК в соц. сетях
ИНН: 7714824045 | erid: 2VtzqwzKQiU
20 страниц V  « < 15 16 17 18 19 > »   
Добавить ответ в эту темуОткрыть тему
> Создание спецификации автоматически (Дубль2), Рассматриваются технология и ее реализация по автоматическому создани
Гость_Supermax_*
сообщение 13.10.2007, 20:54
Сообщение #454





Guest Forum






Kpblc, это твое?
Прикрепленные файлы
Прикрепленный файл  Динамические_блоки_AutoCAD_a.rar ( 765,58 килобайт ) Кол-во скачиваний: 53
 
Вернуться в начало страницы
 
+Ответить с цитированием данного сообщения
Гость_Supermax_*
сообщение 16.10.2007, 11:44
Сообщение #455





Guest Forum






Пользуюсь лиспом Петра В. Лоскутова, который удаляет дубликаты блоков, а у меня таже лажа, только с солидами, да и сдругими примитивами тоже по идее может произойти. Теоретически свойства элемента точь в точь совпавшие с свойствами другого элемента, если сверять абсолютно все, кроме метки, и есть факт наслоения и подлежит коррекции через казнь лишнего.
Еще что мне не понравилось, что работает только по верхам блоков, а в нутрь не лезет. С ссылками не работает (в смыле, тоже в нутрь не лезет). Вт бы кто-нибудь озадачился этим rolleyes.gif

Код
;;;****************************************************************
;;; PL_bl-del-copy3.LSP
;;;*********************************************************************
;;; ОГРАНИЧЕНИЕ ГАРАНТИЙ
;;; ПРОГРАММА РАСПРОСТРАНЯЕТСЯ НА УСЛОВИЯХ "КАК ЕСТЬ".
;;; АВТОР НЕ БЕРЕТ НА СЕБЯ И НЕ ПОДРАЗУМЕВАЕТ КАКИХ-ЛИБО
;;; ГАРАНТИЙНЫХ ОБЯЗАТЕЛЬСТВ.
;;; ВЫ ИСПОЛЬЗУЕТЕ  ПРОГРАММУ НА СВОЙ РИСК.
;;; АВТОР НЕ БЕРЕТ НА СЕБЯ ОТВЕТСТВЕННОСТЬ ЗА ПОТЕРЮ ДАННЫХ,
;;; УЩЕРБ, ПОТЕРЮ ПРИБЫЛИ ИЛИ ЛЮБЫЕ ДРУГИЕ ПОТЕРИ, ПРОИЗОШЕДШИЕ
;;; ВО ВРЕМЯ ИСПОЛЬЗОВАНИЯ ИЛИ НЕПРАВИЛЬНОГО ИСПОЛЬЗОВАНИЯ
;;; ДАННОГО ПРОГРАММНОГО ОБЕСПЕЧЕНИЯ.
;;;**********************************************************************
;;; Разрешается использовать, копировать, изменять, и распространять это программное
;;; обеспечение бесплатно для любой цели при условии, что указанные выше знак авторского
;;; права и примечания об ограничениях гарантий будут приводиться во всех копиях.
;;;**********************************************************************
;;; Copyright ©2004 Пётр В. Лоскутов (Alaspher)
;;; e-mail: alaspher@hotmail.com
;;;**********************************************************************
;;;
;;; Утилита для удаления дубликатов блоков с одинаковыми парамертами (точка вставки, слой,
;;; поворот и масштабные коэффициенты). Рекомендуется применение компилированной версии.
;;;
;;; bldelc - удаление дубликатов
;;;
(defun pl:bl-del-copy (/ sela ondel xget)
  (setq sela (pl:sel-to-list (ssget "_X" '((0 . "INSERT")))))
  (foreach x sela
    (if (not (vl-position x ondel))
      (setq xget  (entget x)
            ondel (append ondel
                          (vl-remove x
                                     (pl:sel-to-list
                                       (ssget "_X"
                                              (list '(0 . "INSERT")
                                                    (assoc 2 xget)
                                                    (assoc 8 xget)
                                                    (assoc 10 xget)
                                                    (assoc 41 xget)
                                                    (assoc 42 xget)
                                                    (assoc 43 xget)
                                                    (assoc 50 xget)
                                                    (assoc 410 xget)
                                              )
                                       )
                                     )
                          )
                  )
      )
    )
  )
  (pl:del-force-ent-lst ondel)
)

(defun pl:del-force-ent-lst (lst / lay lget frz lck err k70 key yes)
  (setq yes 0
        err 0
  )
  (foreach x lst
    (setq lay  (tblobjname "layer" (cdr (assoc 8 (entget x))))
          lget (entget lay)
          k70  (assoc 70 lget)
          key  (cdr k70)
    )
    (if (not (zerop (logand key 1)))
      (progn (setq frz (cons lay frz)) (entmod (subst (cons 70 (- key 1)) k70 lget)))
    )
    (if (not (zerop (logand key 4)))
      (progn (setq lck (cons lay lck)) (entmod (subst (cons 70 (- key 4)) k70 lget)))
    )
    (cond ((vl-catch-all-error-p (vl-catch-all-apply (function entdel) (list x)))
           (setq err (1+ err))
          )
          (t (setq yes (1+ yes)))
    )
  )
  (foreach x frz
    (setq lget (entget x)
          k70  (assoc 70 lget)
    )
    (entmod (subst (cons 70 (+ (cdr k70) 1)) k70 lget))
  )
  (foreach x lck
    (setq lget (entget x)
          k70  (assoc 70 lget)
    )
    (entmod (subst (cons 70 (+ (cdr k70) 4)) k70 lget))
  )
  (list yes err)
)

(defun pl:sel-to-list (ss / i ename result)
  (setq i -1)
  (while (setq ename (ssname ss (setq i (1+ i)))) (setq result (cons ename result)))
)

(defun c:bldelc (/ res)
  (setq res (pl:bl-del-copy))
  (princ "\nDeleted - ")
  (princ (car res))
  (princ ", errors - ")
  (princ (cadr res))
  (princ)
)

(princ "\nCommand line: bldelc")
(princ)


Сообщение отредактировал Supermax - 16.10.2007, 11:46
Вернуться в начало страницы
 
+Ответить с цитированием данного сообщения
kpblc
сообщение 16.10.2007, 11:46
Сообщение #456


CAD Developer


Группа: Участники форума
Сообщений: 409
Регистрация: 6.2.2006
Из: C.-Петербург, Россия
Пользователь №: 2062



overkill попробуй поковырять. Внутри ссылок лично я ничего сделать "на ура" не смогу. Код слишком длинный получится, а я еще предыдущее задание не добил sad.gif
Вернуться в начало страницы
 
+Ответить с цитированием данного сообщения
Гость_Supermax_*
сообщение 17.10.2007, 10:21
Сообщение #457





Guest Forum






Стал делать теплообменник фирмы "РоСВЕП-ТРАНТЕР" и обнаружил, что вес изделия дается для двух состояний - полного и пустого. Выглядит строка так: Вес - полного / пустого ___ kg ___ 140/130 Это меня вогнало в раздумья по поводу многообразия названия свойств и адаптации к этому явлению.
Вот мои мысли:
Поделать с эти мы ничего не можем, поэтому надо приспасабливаться. Как? У нас есть два технологических инструмента. Аудит корректности модели и настройка обработки параметров модели. По первой позиции мы проверяем наличие обязательных позиций и проводим обязательные процедуры (типа выравнивания длин). Вторая позиция - мы настраиваем программу приравнивая значения зашитые в программе к значениям существующим в натуре. Программа анализирует свойства блоков выбранных для обработки, дает список всех вариантов названий этих свойств в одном окне и одно из внутрипрограммных названий в окне напротив. Через Shift или Ctrl создаем набор равноценных значений, который закрепляется за конкретным машинным параметром.
Более того, я в xls для этого место определил, куда их можно сохранять.
На странице "Параметры заполнения таблицы", эта страница регламентирует заполнение таблицы по горизонтали, под именами атрибутов-параметров изделия альтернативные значения. В первой строчке пишется то, что должно быть написано в таблице, в смысле заголовок, а ниже это от куда это взято. То есть заголовок подменяет собой заголовки из свойств или атрибутов.
На листе "Очередность сортировки" разбиение таблицы по вертикали. Первая строка название атрибута, все что ниже в этом столбце - его значение. Название атрибута нигде не прописывается, а вот его значения являются заголовками в спецификации. Все значения идут лесенкой, чтобы понятно было, что за чем расположено. Если значения идут сплошным столбцом, это означает, что справа лежащие подразделы относятся к каждому значению из этой группы. Это же правило распостраняется на каждый столбец.
Вся эта логистика уже сделана и отлажена. В результате которой формируется последовательность сбора и расчета материалов. Столбцов можно писать сколько угодно и разбивать по вертикали на любое число групп.
Единственно что меня здесь не устраивает, это то, что на этом листе имена атрибутов не имеют альтернативных значений. А их надо сохранять где-то, поскольку полученная спецификация должна быть укомплектована этим файлом, в котором должен быть сохранен шаблон настройки альтернативных значений.
Красные маркеры - это обязательное условие соответствия номера строки в таблице значению прописанному в маркере.
Так, я придумал где сохранять соответствия имен, не участвующих в заполнении таблицы.
На листе "Параметры заполнения таблицы" с начала идут столбцы таблицы. В той последовательности, в которой они расположены в бланке этой таблицы. Потом мы делаем пустой столбец (а точнее ячейку в строке с именами-параметрами изделий) и дальше заполняем все наши альтернативные значения хоть до судороги в пальцах.
Просто копируем с листа "Очередность сортировки" в лист "Параметры заполнения таблицы" строку с именами атрибутов принадлежности к... начиная с первой пустой ячейки и далее.

Я конечно испытываю твое терпение Kpblc, но в кратце скажу: Любые таблицы имеют градации по вертикали и градации по горизонтали. То есть, значение которое ты хочешь, чтобы попало в бланк в данную точку и было отформатировано по ширине с данными параметрами должно быть сориентировано по X и Y. Y определяется последним значением разделительной черты (со сдвигом в низ естественно) а X прописан в настройке. Ширина форматирования тоже.
Я подошел к проблеме бланкирования пофигистским методом. А пофигу, какой бланк. Шапка, вертикальные разделительные черты заложены в самом бланке, а горизонтальные мы чертим, как только текст закончится. Он ведь и многострочечным может быть. Все эти трюки я уже отработал в самом начале, когда голову над заполнением ломал. Если ты настроил данную таблицу сортировки на шаблон бланка пусть и DWT или макрос лиспа, что ее отчерчивает. то и пределы тебе известны значит. Вставил и прога клепает тебе эти Layout-ы пока есть что клепать. Сохранл спецификацию и xls к ней приложи, чтобы если вдруг чего-то изменится не корячиться.

Сообщение отредактировал Supermax - 17.10.2007, 10:27
Прикрепленные файлы
Прикрепленный файл  Таблица_очередности.xls ( 28,5 килобайт ) Кол-во скачиваний: 46
 
Вернуться в начало страницы
 
+Ответить с цитированием данного сообщения
Гость_Supermax_*
сообщение 17.10.2007, 13:02
Сообщение #458





Guest Forum






Теплообменник GL-13M. Кушайте на здоровье!
Прикрепленные файлы
Прикрепленный файл  GL_13M.rar ( 1,24 мегабайт ) Кол-во скачиваний: 55
 
Вернуться в начало страницы
 
+Ответить с цитированием данного сообщения
Гость_Supermax_*
сообщение 17.10.2007, 20:02
Сообщение #459





Guest Forum






Надыбал еще одну интересную задачку.
У блока есть точка вставки, но если объект 3D она вставляться куда хочешь не хочет. Приходится двигать графику в редакторе навстречу к своей судьбе. Но если у вас уже собрана монтажка из 3D блоков, в которых точку вставки не делали (черте где находится), то передвижение графики в редакторе вызывает расползание элементов по всему пространству во всех трех осях. Блоки ведь и повернутые есть. У меня такое произошло с болтами и гайками. Я их вставил в блок когда-то и наплевал на точку вставки. Потом копировал из файла в файл вместе с изделиями, а тут понадобилась эта точка на болте и тю-тю.
В простанстве редактора элемент расположен определеным образом к осям пространства редактора. Если мы перемещаем графику в нутри блока, то этот блок перемещается в модели в направлении, которое привязано к геометрии блока, а не к осям модели.
Короче двумя словами: Я хочу не графику к точке перемещать, а точку вставки к графике. Чтобы в модели не графика расползалась, а точки вставки сползались. Чтобы в блоке перемещение всей графики не отражалось на перемещении в моделе.
В обще задачка не простая. Может решал кто-нибудь?

Продолжу:
Мы знаем куда переместится графика - это точка вставки блока в настоящий момент. Координаты этой точки в 10 коде. Для каждого блока точку "от куда" мы знаем. Теперь надо вычислить точку на графике в настоящий момент. Ну допустим, я влез в блок и поставил обычную точку туда, куда хочу поставить точку вставки. Как из модели определить координаты этой точки по отношению к пространству модели автоматически, а не через nentsel?

Сообщение отредактировал Supermax - 17.10.2007, 20:16
Вернуться в начало страницы
 
+Ответить с цитированием данного сообщения
kpblc
сообщение 17.10.2007, 20:46
Сообщение #460


CAD Developer


Группа: Участники форума
Сообщений: 409
Регистрация: 6.2.2006
Из: C.-Петербург, Россия
Пользователь №: 2062



Замена "перезаписи" внешней ссылки, код не тестировал sad.gif http://forum.abok.ru/index.php?act=attach&...st&id=10547
Насчет последней задачи: недавно аналогичную пытались решить на autocad.ru, но "просто так" не получилось. Я тоже пока пас - даже представить себе примерно задачку не могу.
---
Добавлено:
Не все так просто. 10-я точка в XREF'ах - я не помню, как она хранится - в WCS или OCS (210-ю группу не отменяли пока). Соответственно надо переделывать на vla-вариант, там-то только мировые координаты. Но возникает вопрос с преобразованием координат, масштабированием, поворотом...

Сообщение отредактировал kpblc - 19.10.2007, 21:47
Вернуться в начало страницы
 
+Ответить с цитированием данного сообщения
Гость_Supermax_*
сообщение 18.10.2007, 11:46
Сообщение #461





Guest Forum






Только что пришел, сейчас буду твою прогу гонять.
А пока - вот как я решил эту задачу по переписыванию точек вставки (вчера прямо перед подъездом своего дома).
Условия: Куча копий блока в разных местах и с разными углами поворота. Точки вставки светятся как звезды на небе, но не на самих блоках.
Надо: Чтобы точки вставки были на графике, но чтобы графика осталась на месте.

Решения: Их два. Первое попроще, но ручное, второе посложнее и для макроса.
Первое решение:
1. Переименовываем блок. Делаем ему имя "Технический" (к примеру). Все блоки теперь - "Технический". И обязательно purge - удаляем из таблицы блок с первоначальным именем. (хотя там их не должно быть)
2. Копируем в буфер любую из копий и открываем второй чистый файл (теперь открыто два файла первый - с моделью и второй чистый)
3. Вставляем из буфера в чистый файл блок.
4. Возвращаем ему его первоначальное имя.
5. Открываем его редактором и наводим порядок с положением точки вставки
6. Выходим из редактора и копируем отремонтированный блок в буфер
7. Возвращаемся в файл с моделью.
8. Открываем редактором блок "Технический"
9. Вставляем из буфера на место графики блок с первоначальным именем и правильной точкой вставки. Я с начала линию подвожу к месту куда точка вставки должна стать, затем убиваю графику и вставляю из буфера блок. Он сволочь, вставляется не туда, куда я показываю, а в 0,0 и приходится его перетаскивать к линии. После чего сношу линию. Если рядом с графикой атрибуты есть - снести.
10. Выходим из редактора, включаем ручки у всех копий блока "Технический" (ну макросом естественно) и взрываем.
После взрыва блока, его начинка остается на своем месте а она является блоком с первоначальным именем.
Если сравнить порядок расположения вхождений блока "Технический" и порядок вновь появившегося блока, то они по идее совпадут. не проверял. А это значит, что перед всеми этими манипуляциями можно сохранить значения динамических свойств, а потом эти значения прописать новичкам.

Второй вариант:
1. Создаем блок "Точка" с точкой внутри на месте точки вставки. Короче все в одной точке.
2. Заходим в редактор блока и ставим эту точку на графику в то место, куда потом станет точка вставки.
3. Выходим из редактора и программно делаем следующее:
3.1. Создаем набор из всех вхождений этого блока
3.2. К каждому элементу набора применяем следующую последовательность действий
3.2.1. Записать метку блока (любые ориентиры на вхождение)
3.2.2. Взорвать блок
3.2.3. Включить через моделспейс ручку у блока "Точка"
3.2.4. Записать ее координаты в моделе и привязать к метке блока
3.2.5. Вернуть Undo-й блок в целостное состояние
4. Открываем редактором блока наш блок и ставим графику на место. В модели все блоки разлетаются кто куда.
5. Программно переносим каждое вхождение блока по координатам привязанным к его метке.
Все. Пригодно даже для динамических блоков, даже если при перемещении графики внутри блока заново переопределяешь привяку к элементам.

Ваши мнения?

Сообщение отредактировал Supermax - 18.10.2007, 19:01
Вернуться в начало страницы
 
+Ответить с цитированием данного сообщения
Гость_Supermax_*
сообщение 18.10.2007, 12:46
Сообщение #462





Guest Forum






Протестировал. Теперь, если я указываю существующее имя та ссылка на которую я напал, становится той, чье имя я указал. При этом, если эти манипуляции делать не в том виде, в котором рождены ссылки то вновь обредшие свою индивидуальность воспринимают новое видовое пространство как свое родное и вставляются как в план. Короче с видами пока не работает. И с именами тоже.
С именами старый макрос правильно работает, только спрашивать надо и все.
Вернуться в начало страницы
 
+Ответить с цитированием данного сообщения
kpblc
сообщение 18.10.2007, 17:33
Сообщение #463


CAD Developer


Группа: Участники форума
Сообщений: 409
Регистрация: 6.2.2006
Из: C.-Петербург, Россия
Пользователь №: 2062



Во втором варианте именно п.5 (мне так кажется) вызовет 90% проблем. Остальное - не важно в принципе. Не, есть, конечно, вариант такой: предварительно вставить модифицируемый блок в мировой системе координат в точку 0,0,0 с равными масштабами и поворотом = 0; указать новую точку вставки и внутри блока перенести примитивы. Но тут возникает вопрос с переносом вставок блоков. Первую часть перенос примитивов внутри блока) я сделал, осталась вторая. Может, вечером получится...
Вернуться в начало страницы
 
+Ответить с цитированием данного сообщения
Гость_Supermax_*
сообщение 18.10.2007, 17:54
Сообщение #464





Guest Forum






Пункт 5 я проверил. Все работает. Можешь и ты проверить.
Сделай блок с плохой точкой и такой же с хорошей. Хороший выдели цветом. В блоках графика должна быть без поворотов, а только с переносом по X, Y, Z. Расположи хороший блок на графике плохого и так копируй, копируй, копируй. Вращать можешь сколько угодно. Только по дальше друг от друга, чтобы сносы блока видны были, но пары не путались.
Затем Влезь в плохой блок и исправь положение. Плохие блоки расползутся. Теперь бери плохой блок за точку вставки и переноси на точку вставки хорошего (его пара). И можешь это проделать с любыми вариантами поворотов и разворотов.
Если тебе известна точка вставки блока в новом месте (это я с блока "точка" получаю) то в эту координату надо переместить блок данного вхождения. Как бы ты не крутил блок, крутишь ты его вместе с внутриблочным пространством. При перелете в место точки вставки блока графика не будет крутиться, а занчит при перелете обратно блок станет на свое законное место. Ты же переносишь графику в редакторе без ее вращения, так какого ей в модели вращаться?

Сообщение отредактировал Supermax - 18.10.2007, 18:01
Вернуться в начало страницы
 
+Ответить с цитированием данного сообщения
Гость_Supermax_*
сообщение 18.10.2007, 18:26
Сообщение #465





Guest Forum






На сколько я понял, ты можешь программно переместить всю гафику в блоке в точку 0,0,0 пространства редактора блоков, точкой, которую ты укажешь на графике блока из пространства модели?
Если так, то тгда создать программно блок с точкой внутри не проблема и вставить его в точку пространства редактора блока - тоже не проблема. Ну так вообще все в шеколаде.
Результат работы макроса будет такой:
Запустили: - Укажите блок:
Указали: - Укажите точку вставки на графике блока:
Тоже указали - все мелькает и вуаля готово.
Полезная штукенция получится. Только перед началом ее работы в макрос надо вставить принудительное сохранение файла, а то если прервется невзначай - трагедия будет.
Вернуться в начало страницы
 
+Ответить с цитированием данного сообщения
kpblc
сообщение 19.10.2007, 0:49
Сообщение #466


CAD Developer


Группа: Участники форума
Сообщений: 409
Регистрация: 6.2.2006
Из: C.-Петербург, Россия
Пользователь №: 2062



Вариант "переписки" блока - см. #473, http://forum.abok.ru/index.php?act=attach&...st&id=10548
Обязательно! Блок, на который указываешь, должен быть в мировой системе координат, вставлен с равными масштабами и углом поворота 0. Если этого не сделать, новая точка вставки будет черт-те где. Блоки, вставленные не в мировой системе, тоже ведут себя странно. Разницу по масштабам в разных осях не учитывал вообще. Я догадываюсь, что и где должно быть переделано, но мозгов что-то уже не хватает sad.gif

Сообщение отредактировал kpblc - 19.10.2007, 21:46
Вернуться в начало страницы
 
+Ответить с цитированием данного сообщения
Гость_Supermax_*
сообщение 19.10.2007, 10:45
Сообщение #467





Guest Forum






Kpblc, мое уважение к тебе доходит аж до идолопоклонства. Но ты упрям, как стадо бизонов. Какого черта ты в углы полез? Говорю по русски - не вращаются при перемещении! Деталь повернутая раком-боком перемещается в другю точку, в которой точно так же повернута раком-боком.
Так, я сейчас поем, наберусь сил и разнесу твой макрос на мелкие функции.
Вернуться в начало страницы
 
+Ответить с цитированием данного сообщения
Гость_Supermax_*
сообщение 19.10.2007, 14:13
Сообщение #468





Guest Forum






Для начала про замену ссылок
Kpblc, а почему ты не восстанавливаешь 210 DXF код? В оригинале (210 0.0 0.0 1.0) в преобразованом становится 210 0.0 -1.0 0.0).
Непорядок. После вставки ссылки надо восстанавливать все коды!
Вернуться в начало страницы
 
+Ответить с цитированием данного сообщения
kpblc
сообщение 19.10.2007, 14:20
Сообщение #469


CAD Developer


Группа: Участники форума
Сообщений: 409
Регистрация: 6.2.2006
Из: C.-Петербург, Россия
Пользователь №: 2062



Это из 461-го поста?
Вернуться в начало страницы
 
+Ответить с цитированием данного сообщения
Гость_Supermax_*
сообщение 19.10.2007, 15:01
Сообщение #470





Guest Forum






Я пользуюсь 440, но и в 461 тоже нет. Я вручную поменял ссылке этот код на старый и она стала на свое место. Ты в начале спиши его со старой ссылки, а когда новую поставишь - замени.
Вернуться в начало страницы
 
+Ответить с цитированием данного сообщения
Гость_Supermax_*
сообщение 19.10.2007, 15:31
Сообщение #471





Guest Forum






Kpblc, напиши словами алгоритм работы своего макроса, как я описал тебе свое видение. Типа проверяем то-то лезем туда-то, ищем то-то и т.д. Он у тебя не такой уж и большой.
Вернуться в начало страницы
 
+Ответить с цитированием данного сообщения
kpblc
сообщение 19.10.2007, 16:07
Сообщение #472


CAD Developer


Группа: Участники форума
Сообщений: 409
Регистрация: 6.2.2006
Из: C.-Петербург, Россия
Пользователь №: 2062



Описываю код из #467.
Сначала запрашивается вхождение блока и его новая базовая точка;
Разблокируются и размораживаются слои файла (все, поскольку неизвестно, где и как лежит блок);
Вычисляется имя блока, его базовая точка, точка вставки вхождения;
Вычисляется расстояние от будущей базовой точки до точки вставки вхождения и угол поворота блока (*)
в цикле выполняется перемещение блоков - чтобы их новые точки вставки совпадали с будущими (_kpblc-block-reinsert); (*)
В цикле все примитивы блока перемещаются к новой базовой точке
В цикле выполняется обновление всех вхождений блоков;
Восстанавливается состояние слоев.
---
Проблема в местах, отмеченных "*" - там логика хромает.
---
P.S. > #471 : восстановление нормали вставки выполняется, и это там вбито изначально.
P.P.S. Туда же: скорее всего, просто нормали друг на друга накладываются. Блин, неужели придется извращаться? Ох как не хотелось... Я попробую в любом из вариантов #440 / #461 в самом конце удалить слово "normal" и посмотрю, что получится. Если идея окажется верной, выложу код.

Сообщение отредактировал kpblc - 19.10.2007, 16:21
Прикрепленные файлы
Прикрепленный файл  _440_abok_save_as_xref.rar ( 2,13 килобайт ) Кол-во скачиваний: 97
Прикрепленный файл  _461_abok_save_as_xref.rar ( 2,59 килобайт ) Кол-во скачиваний: 92
Прикрепленный файл  _467_abok_move_in_block.rar ( 3,3 килобайт ) Кол-во скачиваний: 95
 
Вернуться в начало страницы
 
+Ответить с цитированием данного сообщения
Гость_Supermax_*
сообщение 19.10.2007, 17:28
Сообщение #473





Guest Forum






Ну, все по порядку.
Цитата
Сначала запрашивается вхождение блока и его новая базовая точка;

Что значит "новая"? В смысле просят указать где она должна быть на графике блока?
Старая светится синей звездой в космосе.

Цитата
Вычисляется имя блока, его базовая точка, точка вставки вхождения;

Если я правильно понял, "базовая точка" - это такая фенька с крестиком в пространстве редактора блока, которая по умолчанию стоит в 0,0,0 (из за чего весь этот сыр-бор), но может стоять и не там (вот только по Z она не перемещается). И ты хочешь перенести графику выбранным местом (новая базовая точка) в пространстве редактора блоков (ну это я образно) в эту точку? То есть открыв редактором блок мы увидим, что графика переместилась в точку с кружечком и крестиком и это может быть не 0?

Так, а зачем тебе вычислять расстояние? и к томуже угол? Координат пространства модели, что не достаточно? Или перенос блока из точки А (где раньше горела звезда, а теперь оказался наш блок) в точку Б (где мы ткнули в место на графике) требует каких-то вычислений?

Значит так:
1. Бери и рисуй просто линию и на конце стрелку. (не далеко от нуля, но не на нулях)
2. Делай из нее блок и точку вставки не указывай. При выделении блока звезда засветится в 0,0,0 модели.
3. Обведи линию другой линией (стрелку тоже). Получится две наложенные линии, одна блок, другая - простая.
4. Выдели оба объекта и перенеси куда-нибудь и там поверни в разных осях на любой тебя интересующий градус.
5. Зайди в редактор блока и перенеси линию за кончик стрелки в 0,0,0
6. Выйди и посмотри что получилось.

Чтобы тебе вернуть блок на место надо только взять его за кончик стрелки, где теперь горит звезда и перенести в точку, где находится стрелка простая точно в ее кончик и графика сольется как одно целое. Никаких расстояний и углов вычислять, повторяю, НЕ НАДО!

А вот дальше - уже принципиально. Я (по малознанию своему) взрываю блок, смотрю в моделспейс, где автоматом появляется блок "точка" (все остальные внутри блоков и только один взорван). Слизываю ее координаты и возвращаю процесс назад к целостности блока. Можно и на блоке списать координаты точки, только вот на каждый блок тыкать прийдется, а так взорвал-слизал-восстановил и так к каждому вхождению. Где горит сейчас звезда вообще нет дела. Даже записывать не надо. Горит где-то и блок туда улетел - ну и фиг с ним. А вот вернуть его надо в данную точку, поскольку если внутри блока графику поставить чтобы совпали блок "точка" с точкой вставки, звезда гореть будет точно на месте блока "точка".
Ну в общем я уже по кругу пошел.
А со слоями все правильно, хотя если все время их размораживать и корежить, а потом замораживать, так зачем вообще тогда это придумали?

Восстановление нормали не выполняется. это факт! А вот почему это не выполняется - ковыряйся.
Вернуться в начало страницы
 
+Ответить с цитированием данного сообщения
Гость_Supermax_*
сообщение 19.10.2007, 18:45
Сообщение #474





Guest Forum






Я скачал файлы и разницы с тем, что в теме не узрел. А она есть?
Вернуться в начало страницы
 
+Ответить с цитированием данного сообщения
Гость_Supermax_*
сообщение 19.10.2007, 18:55
Сообщение #475





Guest Forum






Самое прикольное, что если блок делать по человечески, с указанием точки вставки, то точка вставки все равно в пространстве редактора в 0,0,0 а графика становится выбранным местом в 0,0,0. Вот когда туда входишь и ставишь точку вставки принудительно не в 0,0 Z- ведь нет, только тогда она смещается с нуля. В смысле точка.

Еще более интересно, что если графика 2D и в плоскости 0 по Z (ось то есть, это перемещаться по ней не дают), то указав точку вставки в новом месте она и появляется на графике в этом месте, а графика не двигается. Мы ж ее в блоке не двигали. Вся каша, из за того, что в модели мы по Z работаем.
Вернуться в начало страницы
 
+Ответить с цитированием данного сообщения
Гость_Supermax_*
сообщение 19.10.2007, 20:09
Сообщение #476





Guest Forum






210 код и при переносе точки вставки корежится. А должен по идее оставаться не изменным.
Вернуться в начало страницы
 
+Ответить с цитированием данного сообщения
kpblc
сообщение 19.10.2007, 21:44
Сообщение #477


CAD Developer


Группа: Участники форума
Сообщений: 409
Регистрация: 6.2.2006
Из: C.-Петербург, Россия
Пользователь №: 2062



> #475 : Разницы и быть не должно. Коды из темы сношу.
> #474 : Завтра вечером (сегодня, увы, никак) сделаю видео, покажу, на чем и как я тестировал.
Вернуться в начало страницы
 
+Ответить с цитированием данного сообщения
Гость_Supermax_*
сообщение 20.10.2007, 12:00
Сообщение #478





Guest Forum






Kpblc, что ты всем советуешь эффективное имя использовать? Они же динамические, то есть все разные в теории. А эффективное имя дает возможность прописать параметр сразу всем блокам. А это надо? Какого они тогда динамическими блоками пользуются?
Эту публику надо скучковать в одном месте. Все, что связано с динамическими блоками надо объеденить. Только тема боюсь опять станет в километр длинной и ее перестанут читать с нуля. А это означает, что детские вопросы будут продолжаться до бесконечности.
Предлагаю писать руководство по работе с динамическими блоками. Один пишет, а все просят и обсуждают каждый параграф этой библии. Библия лежит в теме и ее все качают и обсуждают, и предлагают. Типа протокола общего совещания.
Ты как, поддерживаешь идею? Ты ж модератор.

Даже можно чтобы несколько человек одновременно писали по разному. Типа Евангеле от Supermax-a, от Kpblc-a и т.д. Кому что нравится - то и читает.
Вернуться в начало страницы
 
+Ответить с цитированием данного сообщения
kpblc
сообщение 20.10.2007, 15:17
Сообщение #479


CAD Developer


Группа: Участники форума
Сообщений: 409
Регистрация: 6.2.2006
Из: C.-Петербург, Россия
Пользователь №: 2062



Я так понимаю, что это одно из последствий сидения сразу на 2 форумах - dwg.ru и abok.ru smile.gif
То, что я модер - только уменьшает количество свободного времени, ну и ответственности добавляет. По поводу "переписки" блока вариант, предложенный Евгением на http://dwg.ru/f/showthread.php?p=176250 , мне не нравится - хотя бы потому, что блок может быть динамическим, и при его подходе вся динамика потеряется напрочь. Мысля мелькнула, как обойти вариант (для начала) неравных масштабов, но это - вечером. Наверное, без видео придется какое-то время побыть sad.gif
Вернуться в начало страницы
 
+Ответить с цитированием данного сообщения
Гость_Supermax_*
сообщение 21.10.2007, 14:53
Сообщение #480





Guest Forum






Kpblc, я потерял диск с механиклом деск топом 2004. Где найти? Мне болты нужны позарез.
Вернуться в начало страницы
 
+Ответить с цитированием данного сообщения
kpblc
сообщение 23.10.2007, 0:22
Сообщение #481


CAD Developer


Группа: Участники форума
Сообщений: 409
Регистрация: 6.2.2006
Из: C.-Петербург, Россия
Пользователь №: 2062



Блин, а я его с полгода назад выбросил sad.gif
Насчет "перезаписи блока" - мне дальше-то сидеть и голову ломать, или решения Евгения на dwg.ru хватает?
Вернуться в начало страницы
 
+Ответить с цитированием данного сообщения
Гость_Supermax_*
сообщение 23.10.2007, 10:13
Сообщение #482





Guest Forum






Если ты о последней версии, то я ее еще не тестировал. Сейчас займусь. И я так и не понял, динамические блоки рехтует или как? И как с перемещением графики только по Z? Это принципиально, поскольку тогда не нарушаются привязки динамических инструментов.
Вернуться в начало страницы
 
+Ответить с цитированием данного сообщения
kpblc
сообщение 23.10.2007, 10:15
Сообщение #483


CAD Developer


Группа: Участники форума
Сообщений: 409
Регистрация: 6.2.2006
Из: C.-Петербург, Россия
Пользователь №: 2062



Да, я о последней. Я ее тоже не тестил - некогда sad.gif Я в преобразованиях координат запутался. Надо звать VVA.
Вернуться в начало страницы
 
+Ответить с цитированием данного сообщения

20 страниц V  « < 15 16 17 18 19 > » 
Добавить ответ в эту темуОткрыть тему
2 чел. читают эту тему (гостей: 2, скрытых пользователей: 0)
Пользователей: 0

 

Реклама
ООО «Арктика групп» ИНН: 7713634274




Реклама: ООО «СибСтронг» | ИНН 6670013662 | ERID: 2VtzqvWgxEU

ООО «УНИСПЛИТ» ИНН: 6453155081 erid:2VtzqvybpdW

Реклама: ООО «СЛ-ЛАЗЕР» ИНН 7727447267 | erid: 2VtzquvhFWx
Последние сообщения Форума






RSS Текстовая версия Сейчас: 1.8.2025, 23:40
Политика ООО ИИП «АВОК-ПРЕСС» в отношении обработки персональных данных