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

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

Использование координат объекта для его параметризации

Ответ
Поиск в этой теме
Непрочитано 03.03.2014, 15:49 #1
Использование координат объекта для его параметризации
setur
 
Регистрация: 13.08.2013
Сообщений: 7

Имеется динамический блок с одним линейным параметром.
Данный блок массово вставляется в чертеж.

Можно ли как-то задать в качестве размера линейного параметра не число, а формулу, зависящую от Х координаты данного дин. блока?
Просмотров: 2792
 
Непрочитано 03.03.2014, 15:54
#2
Mike999


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


Это возможно в других более прогрессивных программах например Grasshopper for Rhinoceros
Mike999 вне форума  
 
Непрочитано 03.03.2014, 15:56
#3
Valery Brelovsky

Инженер дорожник
 
Регистрация: 22.10.2007
Израиль
Сообщений: 1,859


А попробовать. Кроме прочего не совсем понятна связь с координатами и какая формула предполагается.
Valery Brelovsky вне форума  
 
Автор темы   Непрочитано 03.03.2014, 16:02
#4
setur


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


То есть в автокаде нет этого?
Я просматривал документацию и не нашел там ссылок на что-то подобное.

К примеру, я рисую много палочек и хочу чтобы их высота задавалась зависимостью x^2 +3*x + 5.
setur вне форума  
 
Непрочитано 03.03.2014, 17:15
#5
Valery Brelovsky

Инженер дорожник
 
Регистрация: 22.10.2007
Израиль
Сообщений: 1,859


Цитата:
Сообщение от setur Посмотреть сообщение
То есть в автокаде нет этого?
К примеру, я рисую много палочек и хочу чтобы их высота задавалась зависимостью x^2 +3*x + 5.
Я не сказал что нет. Как раз есть но возможности ограниченны. Можно написать формулу, но не уверен что есть возможность воспользоваться функцией типа "ЕСЛИ". Можно извлечь кординаты обеката, прибавить или разделить. Я например сделал стрелочку с уклоном. Т.е. выставляю болк паралельно линии, и меняется значение уклона. Нужно пробовать, о чём и писал в посте. Да вы не указали версию, если ниже 2006 то врядли. Поля появились где то в районе 2006 версии. Это в отношении формулы.
А что касаемо длинны элементов, есть праметрика, но я не связывал её с полями. Опятьже параметрика она появилась гдето в районе 2012 версии.
Valery Brelovsky вне форума  
 
Непрочитано 04.03.2014, 09:02
#6
pan

добрый человек
 
Регистрация: 23.02.2004
Глушь
Сообщений: 971


Цитата:
Сообщение от Valery Brelovsky Посмотреть сообщение
Опятьже параметрика она появилась гдето в районе 2012 версии.
В 2010.
__________________
Правильно сформулированный вопрос содержит 90% ответа.
pan вне форума  
 
Непрочитано 04.03.2014, 09:08
#7
Кулик Алексей aka kpblc
Moderator

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


Offtop: Вообще-то параметрические зависимости появились в 2009...
__________________
Моя библиотека lisp-функций
---
Обращение ко мне - на "ты".
Все, что сказано - личное мнение.
Кулик Алексей aka kpblc вне форума  
 
Непрочитано 04.03.2014, 09:09
#8
Сергей Богатов


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


Цитата:
Сообщение от setur Посмотреть сообщение
Имеется динамический блок с одним линейным параметром.
Данный блок массово вставляется в чертеж.

Можно ли как-то задать в качестве размера линейного параметра не число, а формулу, зависящую от Х координаты данного дин. блока?
чего-то я сомневаюсь, что это можно сделать без программерства... реакторы смотри...
__________________
Я-проектировщик бывший проектировщик!
Сергей Богатов вне форума  
 
Автор темы   Непрочитано 04.03.2014, 09:35
#9
setur


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


Цитата:
Сообщение от Valery Brelovsky Посмотреть сообщение
Можно извлечь кординаты обеката, прибавить или разделить.
А вот как извлечь? Как применить? В справке не нашел, натолкните плиз, пример может какой есть, или где искать. Версия 2012.
А то я сейчас сижу и вручную тяну за ручки параметра и растягиваю, это ад.

----- добавлено через ~1 ч. -----
Буду пробовать реализовать сие с помощью AutoLISP, только что о нем первый раз прочитал, вроде есть нужный функционал, разобрался как блоки вставлять массово, осталось понять как у блоков менять линейный параметр.
setur вне форума  
 
Непрочитано 04.03.2014, 15:35
#10
Valery Brelovsky

Инженер дорожник
 
Регистрация: 22.10.2007
Израиль
Сообщений: 1,859


Это делается через поля. Вас это интересует? К примеру набираю пару цифр в обычном тексте. Потом кликаю левой кнопкой появляется окно редактирования текста, и пока текст подсвечен кликаю по нему правой кнопкой и в открывшемся окне есть строчка типа вставить поле, это мой пересод с английского, в русской может быть название иначе, но что то анологичное. Откроется окно работы с полями и там уже полистаете. Есть там дальше несколько окон.
Valery Brelovsky вне форума  
 
Автор темы   Непрочитано 04.03.2014, 16:02
#11
setur


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


Имеется ввиду набор цифр в поле для значения линейного параметра? Посмотрю.

На данный момент собрал код, он работает, устанавливает значение линейного параметра у дин. блоков в 1, но это ничего не меняет, размеры не изменяются. Более того, я вручную в панели свойства изменял данный размер и точно такое же поведение. То есть кручу ручку - все изменяется, ставлю цифры в поле - цифры ставятся, но размеры те же, более того когда начинаю крутит опять вручную размер изменяется относительно новых цифр, бред какой-то. Наверное я что-то делаю не так.

Код:
[Выделить все]
 (vl-load-com)
(defun SetDynamicPropValue ( block prop value )
  ;; © Lee Mac 2010
  (vl-some
    (function
      (lambda ( _prop )
        (if (eq prop (vla-get-propertyname _prop))
          (progn
            (vla-put-value _prop
              (vlax-make-variant value
                (vlax-variant-type (vla-get-value _prop))
              )
            )
            value
          )
        )
      )
    )
    (vlax-invoke block 'GetDynamicBlockProperties)
  )
)
(defun c:mddd ( / doc ss )
;;Lee Mac
  (setq doc (vla-get-ActiveDocument (vlax-get-acad-object)))
  
  (if (ssget '((0 . "INSERT") (2 . "strip100_PEREM,`*U*")))
    (progn
      (vlax-for obj (setq ss (vla-get-ActiveSelectionSet doc))
        (if (eq "STRIP100_PEREM" (strcase (vla-get-EffectiveName obj)))
			(progn
				(setq arrayCoord (vlax-variant-value (vla-get-InsertionPoint obj)))
				(setq X (vlax-safearray-get-element arrayCoord 0))
				(setq Y (vlax-safearray-get-element arrayCoord 1))
				(if (> Y 0)
					(SetDynamicPropValue obj "distdist" 1)
				)
				;;(SetDynamicPropValue obj "distdist" 1)
			)
        )
      )
      (vla-delete ss)
    )
  )
  
  (princ)
)
setur вне форума  
 
Непрочитано 04.03.2014, 16:28
#12
twilight


 
Регистрация: 17.10.2009
Сообщений: 1,108


Цитата:
Сообщение от Valery Brelovsky Посмотреть сообщение
Это делается через поля.
Врт это:
"я рисую много палочек и хочу чтобы их высота задавалась зависимостью x^2 +3*x + 5." через поля не делается. Через поля пожно померить нарисованное и вывести значение (преобразовав через формулу или так). В обратную сторону - изменять длину палочек изменяя поля, не выйдет.
twilight вне форума  
 
Непрочитано 04.03.2014, 16:50
#13
Valery Brelovsky

Инженер дорожник
 
Регистрация: 22.10.2007
Израиль
Сообщений: 1,859


Цитата:
Сообщение от twilight Посмотреть сообщение
Врт это:
"я рисую много палочек и хочу чтобы их высота задавалась зависимостью x^2 +3*x + 5." через поля не делается. Через поля пожно померить нарисованное и вывести значение (преобразовав через формулу или так). В обратную сторону - изменять длину палочек изменяя поля, не выйдет.
Я писал что изменения значений праметрики через поля не проверял.

Цитата:
Сообщение от Valery Brelovsky Посмотреть сообщение
А что касаемо длинны элементов, есть праметрика, но я не связывал её с полями.
Valery Brelovsky вне форума  
 
Автор темы   Непрочитано 05.03.2014, 13:21
#14
setur


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


Все ништяк, всем спасибо. Вместо того чтобы изменять параметры блоков я решил сделать скрипт который строит фигуру полилинией по точкам, множит ее в заданных количествах и с нужными геометрическими зависимостями. Все получается. Даже немного в ЛИСП въехал, после С непривычно очень.
setur вне форума  
 
Непрочитано 06.03.2014, 10:46
#15
pan

добрый человек
 
Регистрация: 23.02.2004
Глушь
Сообщений: 971


Цитата:
Сообщение от twilight Посмотреть сообщение
рисую много палочек и хочу чтобы их высота задавалась зависимостью x^2 +3*x + 5.
По сути х - это расстояние от некой точки (0,0). Если в этой точке расположить некий объект, и от него наложить размерные зависимости, задача решается.
Цитата:
Сообщение от Кулик Алексей aka kpblc Посмотреть сообщение
Offtop: Вообще-то параметрические зависимости появились в 2009...
Offtop: На что спорим, что в 2010?
__________________
Правильно сформулированный вопрос содержит 90% ответа.
pan вне форума  
 
Непрочитано 06.03.2014, 10:57
#16
Кулик Алексей aka kpblc
Moderator

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


Цитата:
Сообщение от pan Посмотреть сообщение
Offtop: На что спорим, что в 2010?
Offtop: Не буду спорить - проиграю. Сорри, бывает...
__________________
Моя библиотека lisp-функций
---
Обращение ко мне - на "ты".
Все, что сказано - личное мнение.
Кулик Алексей aka kpblc вне форума  
Ответ
Вернуться   Форум DWG.RU > Программное обеспечение > AutoCAD > Использование координат объекта для его параметризации



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Содержание раздела ПЗУ (генплан) в ПД Tyhig Прочее. Архитектура и строительство 45 10.12.2015 11:09
Аттестация в Минрегионе по негосударственной экспертизе Людмила Охр Прочее. Архитектура и строительство 350 14.02.2015 17:50
Ввод в эксплуатацию салона красоты - нужно ли (и в какой форме) согласование с пожарниками ? drill_man Прочее. Архитектура и строительство 4 20.09.2013 12:03
Помощь по Лире Серега М Лира / Лира-САПР 52 28.05.2007 02:47