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

Вернуться   Форум DWG.RU > Программное обеспечение > AutoCAD > Динамические блоки > Мои динамические блоки [2]

Мои динамические блоки [2]

Закрытая тема
Поиск в этой теме
Непрочитано 21.04.2011, 23:33
Мои динамические блоки [2]
Кулик Алексей aka kpblc
Moderator
 
LISP, C# (ACAD 200[9,12,13,14])
 
С.-Петербург
Регистрация: 25.08.2003
Сообщений: 39,844

Тема служит продолжением закрытой темы Мои динамические блоки


Спасибо VVA:
В 2010-2011-2012 в редакторе блоков при настройках по умолчанию нельзя добавлять к операциям некоторые вещи, например к операции Flip добавить Strech и т.д.
Проблема:
http://forum.dwg.ru/showpost.php?p=7...postcount=2666
Лечение:
http://forum.dwg.ru/showpost.php?p=7...postcount=2679

==================================================

Проблема:
В некоторых чертежах долго открывается редактор блоков (_bedit)
Лечение:
Проверить в блоке/блоках значение линейных параметров "Максимальное расстояние". Должно быть задано хоть какое-то значение
Блок эдитор открывает несколько минут.

__________________
Моя библиотека lisp-функций
---
Обращение ко мне - на "ты".
Все, что сказано - личное мнение.
Просмотров: 1499236
 
Непрочитано 13.10.2017, 19:04
#3881
skkkk


 
Регистрация: 20.03.2008
Сообщений: 2,653


AMDen, всё верно, спасибо, теперь буду знать. Действительно, с палитры вставляется корректно. Припоминаю вроде, какие-то проблемы тогда у меня были с этим местозаполнителем блока, то ли после обновления атрибутов, то ли еще почему-то, но сейчас воспроизвести их не удалось.
skkkk вне форума  
 
Непрочитано 14.10.2017, 03:34
#3882
Theodor


 
Регистрация: 16.04.2009
Петрозаводск
Сообщений: 323


Коллеги, а вариации по вашим предложениям, но с полем-ссылкой в одном атрибуте на значение другого атрибута в том же блоке не пробовали?
Theodor вне форума  
 
Непрочитано 15.10.2017, 11:05
#3883
vit1989


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


Цитата:
Сообщение от Theodor Посмотреть сообщение
Цитата:

Цитата:
Сообщение от vit1989
При необходимости изменения стадии П на Р можно сделать через свойства чертежа
Я не знаю, чем занимается указанная вами примочка от многоуважаемого Любавина В.В., но в своем опусе имел ввиду не буковку "П" или "Р" в основной надписи, а маленький пряоугольничек со сквозной нумерацией вверху справа формата. Предложил вариант пакетного отключения этого уголка при помощи специально выделенного для этого слоя. Если конечно та самая примочка не меняет видимость во всех блоках рамки на всех листах.

Цитата:
Сообщение от vit1989
utocad Key Manager (c) Любавин Василий Владимирович)
А что делает сей продукт? В ближайшем приближении не нашел о нем инфы.
1) Прямоугольник можно отключить в зависимости от стадии это предусмотрено
2) Сия программка очень помогает со свойствами документа, хотя можно и из автокада с ними работать, но через программку намного удобнее, особенно если нужно скопировать из одного в файла в другой (опять же вопросы оформления штампов)
vit1989 вне форума  
 
Непрочитано 16.10.2017, 10:42
1 | #3884
AMDen

Инженер-проектировщик
 
Регистрация: 07.07.2016
Санкт-Петербург
Сообщений: 723


Цитата:
Сообщение от Theodor Посмотреть сообщение
Коллеги, а вариации по вашим предложениям, но с полем-ссылкой в одном атрибуте на значение другого атрибута в том же блоке не пробовали?
Пробовал. Всё работает.
AMDen вне форума  
 
Непрочитано 26.10.2017, 07:42
#3885
gumel


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


Добрый день.
Подскажите неопытному, можно ли каким либо макаром связать несколько линейных параметров в одном блоке?
Суть вопроса заключается в желании использовать array action в связке с линейным параметром. Проблема заключается в том, что хотелось бы, чтобы линейный параметр соответствовал объекту (допустим определял его габарит), а элементы, которые подвергаются размножению находятся с неким смещением относительно границ этого самого объекта.. Заморочено сформулировал вопрос, понятней будет если глянуть вложение
Вложения
Тип файла: dwg
DWG 2004
вопрос по дин блоку.dwg (40.2 Кб, 44 просмотров)
gumel вне форума  
 
Непрочитано 26.10.2017, 10:01
1 | #3886
AMDen

Инженер-проектировщик
 
Регистрация: 07.07.2016
Санкт-Петербург
Сообщений: 723


Цитата:
Сообщение от gumel Посмотреть сообщение
Подскажите неопытному, можно ли каким либо макаром связать несколько линейных параметров в одном блоке?
Можно. У линейного параметра для массива указать в свойствах - "показать свойства": нет; "цепочка операций": да.
AMDen вне форума  
 
Непрочитано 26.10.2017, 10:33
#3887
gumel


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


Цитата:
Сообщение от AMDen Посмотреть сообщение
Можно. У линейного параметра для массива указать в свойствах - "показать свойства": нет; "цепочка операций": да.
Спасибо, еще Number Of Grips сделал равным нулю

----- добавлено через ~21 ч. -----
Еще вопрос.
А как сделать так, и вообще возможно ли такое?

Хотелось бы осуществить связку линейных параметров по определенным параметрам.
Допустим, если пользователь устанавливает линейный параметр равным 1000, то зависимый линейный параметр становится равным 300, если 1500, то 500, а во всех остальных случаях зависимы линейный параметр должен быть равен нулю.
Скорее всего, что нужно рыть в сторону Lookup'а но чет не могу допереть..

Заранее благодарен
gumel вне форума  
 
Непрочитано 28.10.2017, 00:49
#3888
Theodor


 
Регистрация: 16.04.2009
Петрозаводск
Сообщений: 323


Цитата:
Сообщение от gumel Посмотреть сообщение
Скорее всего, что нужно рыть в сторону Lookup'а но чет не могу допереть.
Я не знаю, что применительно к каду значит lookup, по попробуйте задействовать выбор. Ну или я не понял до конца задачу.
Theodor вне форума  
 
Непрочитано 30.10.2017, 12:35
#3889
Geniy_Dzydo


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


Приветствую всех!!!!
Делаю блок для генлпаниста, не знаю как у них называется этот элемент, он в общем две высотные отметки вычитает и рядом разницу между высотными отметками показывает. Так вот вопрос в следующем, как заставить формулу ставить знак "+", знак "-" благо сам по себе ставится!
Вложения
Тип файла: dwg
DWG 2013
дельта.dwg (36.3 Кб, 37 просмотров)
Geniy_Dzydo вне форума  
 
Непрочитано 30.10.2017, 12:59
#3890
Theodor


 
Регистрация: 16.04.2009
Петрозаводск
Сообщений: 323


Цитата:
Сообщение от Geniy_Dzydo Посмотреть сообщение
Так вот вопрос в следующем, как заставить формулу ставить знак "+"
Попробуйте поколдовать с дизелем.
Theodor вне форума  
 
Непрочитано 30.10.2017, 13:27
#3891
Geniy_Dzydo


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


Цитата:
Сообщение от Theodor Посмотреть сообщение
Попробуйте поколдовать с дизелем.
Ну в экселе я бы наколдовал, а тут для меня темный лес. Прошу гуру программирования научить. разъяснить, наставить на путь истинный!
$(if, условие, истина [, ложь]) - синтаксис условия
$(>=, знач1, знач2) - синтаксис условия больше нуля, где знач1 - это разница между отметками, которые берутся из атрибутов. Знач2 - это нуль
собственно как это в итоге должно выглядеть? $(if, $(>=, знач1, 0), "+"знач1, знач1) - предполагаю как то так, как заставить дизель ставить знак плюс перед Знач1? да и Знач1 нужно представлять в виде этой длинной строки %<\AcExpr (%<\_FldPtr 831151280>%-%<\_FldPtr 831202832>%) \f "%lu2%pr2">%

Последний раз редактировалось Geniy_Dzydo, 30.10.2017 в 13:33.
Geniy_Dzydo вне форума  
 
Автор темы   Непрочитано 30.10.2017, 13:29
#3892
Кулик Алексей aka kpblc
Moderator

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


Попробуй $(strcat,"+",Знач1)
Но сработает или нет, без понятия.
__________________
Моя библиотека lisp-функций
---
Обращение ко мне - на "ты".
Все, что сказано - личное мнение.
Кулик Алексей aka kpblc вне форума  
 
Непрочитано 30.10.2017, 13:47
#3893
Geniy_Dzydo


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


Прописал $(strcat,"+",Знач1) - прописал, но не помогло, может не так прописал коненчо
Вложения
Тип файла: dwg
DWG 2013
дельта.dwg (44.9 Кб, 30 просмотров)
Geniy_Dzydo вне форума  
 
Непрочитано 30.10.2017, 15:37
#3894
Theodor


 
Регистрация: 16.04.2009
Петрозаводск
Сообщений: 323


Цитата:
Сообщение от Geniy_Dzydo Посмотреть сообщение
Прошу гуру программирования научить.
вот тут гуру программирования пришли к выводу, что дизель вычислит только один раз при создании блока и потом никак не будет реагировать на изменения значений атрибутов.
Там же есть пример, как осуществлялась попытка.
Theodor вне форума  
 
Непрочитано 30.10.2017, 15:42
#3895
Geniy_Dzydo


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


Эх, ну ладно, благо у генпланистки большинство отметок положительные, так что перед полем тупо поставил знак +. Всем спасибо!
Geniy_Dzydo вне форума  
 
Непрочитано 30.10.2017, 16:04
#3896
Theodor


 
Регистрация: 16.04.2009
Петрозаводск
Сообщений: 323


Сделайте еще один атрибут и прикрутите впереди к итоговому. Пусть генпланист сам решает, надо ли ему добавить плюсик или удалить, если значение отрицательное.
Theodor вне форума  
 
Непрочитано 30.10.2017, 16:25
#3897
Geniy_Dzydo


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


Цитата:
Сообщение от Theodor Посмотреть сообщение
Сделайте еще один атрибут
тогда блок не будет универсальным. т.к. придется этот атрибут двигать ближе/дальше к отметке! )))
Geniy_Dzydo вне форума  
 
Непрочитано 30.10.2017, 16:43
#3898
skkkk


 
Регистрация: 20.03.2008
Сообщений: 2,653


При назначении "правильного" выравнивания атрибутов есть шанс, что не придется двигать, но тогда расстояние от атрибута с разностью до атрибутов отметок будет непостоянным.

Я бы копал в сторону реакторов в данном случае. Тогда и поля бы не понадобились. Правда вопрос, что загрузит Автокад сильнее. Поля при большом количестве замедлят сохранение, печать, регенерацию, хотя тут отчасти поможет подбор переменной FIELDEVAL. А в случае с реактором возможны тормоза при редактировании таких блоков. Но это неточно. Я сужу по опыту создания реактора на команду _copyclip. Ну и, конечно, придется на всех машинах обеспечить загрузку лиспа, и AutoCAD LT - мимо.

Либо вместо реактора, после выставления всех отметок вызвать команду, допустим, что-то вроде "вычислить", и она пересчитает все атрибуты с разностью. Одним словом - программирование тут нужно.
skkkk вне форума  
 
Непрочитано 30.10.2017, 17:01
#3899
Geniy_Dzydo


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


ну если кто-то из сильных мира сего спрограммирует что-то подобное (если уж 3Д блоки динамические народ делает), то думаю все генпланисты данного ресурса скажут спасибо. Хотя подозреваю, что для генпланистов есть специальный модуль, где это все уже реализовано. Но конечно его никто нам не купит))))
кстати сделал тоже самое и без блока, просто с тремя текстами...
Geniy_Dzydo вне форума  
 
Непрочитано 30.10.2017, 20:12
1 | #3900
skkkk


 
Регистрация: 20.03.2008
Сообщений: 2,653


Для блока "дельта", который во вложении в #3889
Код:
[Выделить все]
 (defun C:ATT_RESIDUAL ( / ss i vla_obj_list vla_obj)
	(vl-load-com)
	(setq ss (ssget "_X" '((0 . "INSERT"))))
	(if ss
		(repeat (setq i (sslength ss))
			(setq vla_obj_list (cons (vlax-ename->vla-object (ssname ss (setq i (1- i)))) vla_obj_list))
		)
	)
	(if vla_obj_list 
		(setq 
			vla_obj_list
			(vl-remove-if-not
			   '(lambda (x) 
					(wcmatch (get-block-name x) "дельта")
				)
				vla_obj_list
			)
		)
	)
	(mapcar 
	   '(lambda (x)
			(LM:vl-setattributevalue
				x
				"СТРОКА1"
				(rtos 
					(- 	(atof (LM:vl-getattributevalue x "СТРОКА3"))
						(atof (LM:vl-getattributevalue x "СТРОКА2"))
					)
					2 2
				)
			)
			(if (> (atof (LM:vl-getattributevalue x "СТРОКА1")) 0)
				(LM:vl-setattributevalue x "СТРОКА1" (strcat "+" (LM:vl-getattributevalue x "СТРОКА1")))
			)
			
		) 
		vla_obj_list
	)
)




;; Get Attribute Value  -  Lee Mac
;; Returns the value held by the specified tag within the supplied block, if present.
;; blk - [vla] VLA Block Reference Object
;; tag - [str] Attribute TagString
;; Returns: [str] Attribute value, else nil if tag is not found.

(defun LM:vl-getattributevalue ( blk tag )
    (setq tag (strcase tag))
    (vl-some '(lambda ( att ) (if (= tag (strcase (vla-get-tagstring att))) (vla-get-textstring att))) (vlax-invoke blk 'getattributes))
)



;; Set Attribute Value  -  Lee Mac
;; Sets the value of the first attribute with the given tag found within the block, if present.
;; blk - [vla] VLA Block Reference Object
;; tag - [str] Attribute TagString
;; val - [str] Attribute Value
;; Returns: [str] Attribute value if successful, else nil.

(defun LM:vl-setattributevalue ( blk tag val )
    (setq tag (strcase tag))
    (vl-some
       '(lambda ( att )
            (if (= tag (strcase (vla-get-tagstring att)))
                (progn (vla-put-textstring att val) val)
            )
        )
        (vlax-invoke blk 'getattributes)
    )
)

(defun get-block-name ( blockentity / name repbtag )
;;; (C) Lee Mac LM:EffectiveName
;;; http://www.theswamp.org/index.php?topic=37493.0
;;; http://forum.dwg.ru/showthread.php?t=65082
;;; blockname EffectiveName динамические блоки
  (if (= (type blockentity) 'VLA-OBJECT)
	(setq blockentity (vlax-vla-object->ename blockentity))
  )
  (if (wcmatch (setq name (cdr (assoc 2 (entget blockentity)))) "`**")
    (if
      (and
        (setq repbtag
          (cdadr
            (assoc -3
              (entget
                (cdr
                  (assoc 330
                    (entget (tblobjname "BLOCK" name))
                  )
                )
               '("AcDbBlockRepBTag")
              )
            )
          )
        )
        (setq repbtag (handent (cdr (assoc 1005 repbtag))))
      )
      (setq name (cdr (assoc 2 (entget repbtag))))
    )
  )
  name
)


Использованы функции от Lee Mac отсюда.

----- добавлено через ~10 мин. -----
Да, забыл. Чтобы после точки отображались нули, если разница будет целым числом, нужно переменную DIMZIN установить в 0.
skkkk вне форума  
Закрытая тема
Вернуться   Форум DWG.RU > Программное обеспечение > AutoCAD > Динамические блоки > Мои динамические блоки [2]

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


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Динамические блоки при копировании перестают быть динамическими. *Voland* Динамические блоки 11 04.07.2012 10:51
Мои динамические блоки Shoorup Динамические блоки 2713 21.04.2011 23:34
соединить динамические блоки отрезками по кротчайшему пути gizmo_zx Программирование 18 06.09.2010 20:32
Глюк. Динамические блоки становится статическим! b_anton Динамические блоки 10 24.06.2008 16:27
HELP!!! Динамические блоки? Bdod Динамические блоки 13 07.04.2007 08:59