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

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

Добавление в центр штриховки текстового объекта со значением ее площади

Ответ
Поиск в этой теме
Непрочитано 06.05.2020, 10:03 1 |
Добавление в центр штриховки текстового объекта со значением ее площади
Yur.OK_SPb
 
Регистрация: 25.01.2011
Сообщений: 105

Тема отделена от https://forum.dwg.ru/showthread.php?t=156849.

Цитата:
Сообщение от Oleg T Посмотреть сообщение
Вот здесь
http://www.lee-mac.com/midlen.html
ставит поля со значением длины каждого выделенного объекта.
Может, пригодится.
А нет ли похожей софтины для указания площади штриховки? Чтобы не выбирать её и не смотреть в свойствах?

Последний раз редактировалось Кулик Алексей aka kpblc, 14.05.2020 в 14:37.
Просмотров: 7799
 
Непрочитано 14.05.2020, 17:08
#21
koMon


 
Блог
 
Регистрация: 26.09.2017
Сообщений: 1,665


плавающий косяк
koMon вне форума  
 
Непрочитано 14.05.2020, 17:14
#22
skkkk


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


koMon, нет мыслей, как побороть? У меня только одна пришла пока из недолго реализуемых: при появлении косяка внутри цикла зумировать на этой штриховке с запросом выбрать точку в заштрихованной области и командным методом подставить эту точку в _-HATCHEDIT. Костыль еще тот, но мысли окончились пока.
Пробовал метод AppendOuterLoop, но это почему-то не сработало


Offtop:
Цитата:
Сообщение от Yur.OK_SPb Посмотреть сообщение
Тема отделена
Спасибо, Алексей.
skkkk вне форума  
 
Непрочитано 14.05.2020, 17:15
#23
koMon


 
Блог
 
Регистрация: 26.09.2017
Сообщений: 1,665


что характерно. если штриховать указанием точки внутри, то ок, а если объект, то не ок.

----- добавлено через ~4 мин. -----
Watson, you are THE perfectionist, ain't you?

----- добавлено через ~10 мин. -----
у них однозначно хромает механизм вычисления площади у косячных плиний. и я как-то даже не вижу как это можно решить малой кровью программно, кроме как найти и обезвредить ручками)))
koMon вне форума  
 
Автор темы   Непрочитано 14.05.2020, 20:14
#24
Yur.OK_SPb


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


Цитата:
Сообщение от skkkk Посмотреть сообщение
Кстати, подумал, что я бы сделал стиль отличным от тех, что уже есть в чертеже. Или высоту. Или слой. Чтобы быстрым выбором можно было потом выбрать эти тексты.
Там фишка в том, что рядом со штриховками прописываются их номера обычным текстом. А тут Мтекст с их площадью. Больше в слое, кроме полилиний, штриховок, номеров и площадей ничего нет) Поэтому даже через выбор подобных эти значения площадей легко выделить и что-либо с ними сделать.
Yur.OK_SPb вне форума  
 
Непрочитано 14.05.2020, 21:28
#25
Alex.gomel


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


Цитата:
Сообщение от koMon Посмотреть сообщение
что характерно. если штриховать указанием точки внутри, то ок, а если объект, то не ок.
----- добавлено через ~10 мин. -----
у них однозначно хромает механизм вычисления площади у косячных плиний. и я как-то даже не вижу как это можно решить малой кровью программно, кроме как найти и обезвредить ручками)))
Объект имеет самопересечение - поэтому и возникает проблема. При указании точки внутри строиться новый контур и участок самопересечения не учитывается.

Делал проверку на самопересечение контура, если оно имеется - перестраивал штриховку с вычислением внутренней точки контура. Для получения корректных координат внутренней точки (были еще и островки) приходилось повозиться, использовал наложение на контур ортогональной сетки с поиском самых длинных линий.
http://https://forums.autodesk.com/t5/autodesk-api-russkiy/geometricheskiy-tsentr-ne-tsentr-tyazhesti-mnogougolnika/m-p/7685147#M822

Последний раз редактировалось Alex.gomel, 14.05.2020 в 21:39.
Alex.gomel вне форума  
 
Непрочитано 14.05.2020, 21:41
#26
koMon


 
Блог
 
Регистрация: 26.09.2017
Сообщений: 1,665


Цитата:
Сообщение от Alex.gomel Посмотреть сообщение
Объект имеет самопересечение
Характерность не в самопересечениях, а в том как механизм обнаружения замкнутой площади коряво работает для разных евохних))) выборов. Ведь казалось бы цель одна, а результат печально разный. Кстати если посмотреть на описание штриховки, то и оно будет почему-то разным для разных выборов. Налицо стратегическая ошибка, имхо.
koMon вне форума  
 
Непрочитано 24.05.2020, 15:12
#27
Куинбус Флестрин


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


Добрый день!
А есть ли возможность лисп из поста №8 переделать, что-бы происходило автоматическое проставление всех площадей одновременно для каждого из выбранных замкнутых контуров (например контуров выполненных поллиниями).
Программа Areas2Field от Lee Mac проставляет площади отдельных контуров, вычисляет суммарную площадь выбранных контуров и если нужно все это можно внести в ячейку таблицы. Но может возможно, после выбора (через Selsim например), контуров (на одном слое или одного цвета или по другим характеристикам), получить проставленные мтекстом внутри этих контуров их площади?
Спасибо!
Куинбус Флестрин вне форума  
 
Непрочитано 29.05.2020, 00:03
#28
skkkk


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


Цитата:
Сообщение от Куинбус Флестрин Посмотреть сообщение
например контуров выполненных поллиниями
А какие еще "напримеры"?
skkkk вне форума  
 
Непрочитано 29.05.2020, 15:03
#29
koMon


 
Блог
 
Регистрация: 26.09.2017
Сообщений: 1,665


Цитата:
Сообщение от skkkk Посмотреть сообщение
А какие еще "напримеры"?
окружность, эллипс, фигура, сплайн
koMon вне форума  
 
Непрочитано 29.05.2020, 15:17
#30
skkkk


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


koMon, это-то ясное дело - лошадь, раз рога. Какие типы объектов с площадью бывают, нам известно. Просто центроиды для всех лень обрабатывать
skkkk вне форума  
 
Непрочитано 29.05.2020, 15:27
#31
koMon


 
Блог
 
Регистрация: 26.09.2017
Сообщений: 1,665


get boundingbox back!
koMon вне форума  
 
Непрочитано 26.06.2020, 01:18
#32
kacugu

начинающий инженер-гидротехник
 
Регистрация: 18.04.2010
Санкт-Петербург
Сообщений: 893


Цитата:
Сообщение от skkkk Посмотреть сообщение
это только у меня или у всех?
Offtop: Сайт снова стал доступен без впн (такое ощущение, что это как-то связано с разблокировкой телеграма)
kacugu вне форума  
 
Непрочитано 26.06.2020, 04:58
1 | #33
gumel


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


Цитата:
Сообщение от skkkk Посмотреть сообщение
Просто центроиды для всех лень обрабатывать
уже давно пользуюсь одним замечательным лиспом на этот счет (строит точку в центре тяжести фигуры):

Код:
[Выделить все]
  (defun c:centr (/)
  (vl-load-com)
  (setq acadObject (vlax-get-acad-object))
  (setq acadDocument (vla-get-ActiveDocument acadObject))
  (setq numSpace (vla-get-ActiveSpace acadDocument))
  (cond	((= numSpace 1)
	 (setq ActSpace (vla-get-ModelSpace acadDocument))
	)
	((= numSpace 0)
	 (setq ActSpace (vla-get-PaperSpace acadDocument))
	)
  )
  (setq	sset (ssget '((-4 . "<OR")
		      (0 . "CIRCLE")
		      (0 . "ELLIPSE")
		      (-4 . "<AND")
		      (0 . "LWPOLYLINE")
		      (70 . 1)
		      (-4 . "AND>")
		      (0 . "REGION")
		      (-4 . "OR>")
		     )
	     )
  )
  (setq	count	  (sslength sset)
	i	  0
	n	  0
	m	  0
	k	  0
	summX	  0
	summY	  0
	summareas 0
	listX	  (list)
	listY	  (list)
	listAreas (list)
  )
  (while (<= i (1- count))
    (setq objType (cdr (assoc 0 (entget (ssname sset i)))))
    (setq Obj (vlax-ename->vla-object (ssname sset i)))
    (if	(= objType "LWPOLYLINE")
      (progn
	(setq vla_region
			  (car (vlax-safearray->list
				 (vlax-variant-value
				   (vla-addregion
				     (vla-objectidtoobject
				       (vla-get-document
					 Obj
				       )
				       (vla-get-ownerid
					 Obj
				       )
				     )
				     (vlax-safearray-fill
				       (vlax-make-safearray
					 vlax-vbobject
					 (cons 0 (1- (length (list Obj))))
				       )
				       (list Obj)
				     )
				   )
				 )
			       )
			  )
	      centerPtLst
			  (vlax-safearray->list
			    (vlax-variant-value (vla-get-centroid vla_region))
			  )
	      CurrArea
			  (vla-get-Area vla_region)
	)
	(setq ListX	(append ListX (list (car centerPtLst)))
	      ListY	(append ListY (list (cadr centerPtLst)))
	      ListAreas	(append ListAreas (list CurrArea))
	)
	(vla-delete vla_region)
      )
    )

    (if	(= objType "REGION")
      (progn
	(setq centerPtLst
			  (vlax-safearray->list
			    (vlax-variant-value (vla-get-centroid Obj))

			  )
	      CurrArea
			  (vla-get-Area obj)
	)
	(setq ListX	(append ListX (list (car centerPtLst)))
	      ListY	(append ListY (list (cadr centerPtLst)))
	      ListAreas	(append ListAreas (list CurrArea))
	)
      )
    )
    (if	(or (= objType "CIRCLE") (= objType "ELLIPSE"))
      (progn
	(setq centerPtLst
			  (vlax-safearray->list
			    (vlax-variant-value (vla-get-center Obj))
			  )
	      CurrArea
			  (vla-get-Area obj)
	)
	(setq ListX	(append ListX (list (car centerPtLst)))
	      ListY	(append ListY (list (cadr centerPtLst)))
	      ListAreas	(append ListAreas (list CurrArea))
	)
      )
    )
    (setq i (1+ i))
  )
  (setq	summXlist (mapcar '* ListX ListAreas)
	summYlist (mapcar '* ListY ListAreas)
  )
  (foreach n summXList (setq summX (+ summX n)))
  (foreach m summYList (setq summY (+ summY m)))
  (foreach k ListAreas (setq summAreas (+ summAreas k)))
  (setq	centerPtList (list (/ summX summAreas) (/ summY summAreas) 0)
	pointCoord   (ptnList->variantArray centerPtList)
	PointObj     (vla-addPoint ActSpace pointCoord)
  )
  (princ)
)

(defun ptnList->variantArray (ptsList / arrayActSpace sArray)
  (setq	arrayActSpace
	 (vlax-make-safearray
	   vlax-vbdouble
	   (cons 0
		 (- (length ptsList) 1)
	   )
	 )
  )
  (setq sArray (vlax-safearray-fill arrayActSpace ptsList))
  (vlax-make-variant sArray)
)
gumel вне форума  
 
Непрочитано 06.04.2023, 14:23
#34
mvartem


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


Цитата:
Сообщение от skkkk Посмотреть сообщение
Код:
Скажите пожалуйста:

1. как в этом коде сделать отображение площади в "метрах" или в единицах, установленных в uNIts?

2. прочитал тему, так и не понял, как модифицировать код для выравнивания значения по центру масс штриховки

upd: со вторым вопросом разобрался)

Последний раз редактировалось mvartem, 06.04.2023 в 19:42.
mvartem вне форума  
 
Непрочитано 07.04.2023, 16:43
#35
skkkk


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


mvartem, дайте файл, где нужно это делать. Там куча всякого есть, что может повлиять на отображение единиц.
skkkk вне форума  
Ответ
Вернуться   Форум DWG.RU > Программное обеспечение > Программирование > LISP > Добавление в центр штриховки текстового объекта со значением ее площади

Размещение рекламы
Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Revit c# Не пойму, что выдает в качестве площади объекта dvim Программирование 4 15.01.2017 21:25
Как перенести значение площади объекта в таблицу Libet AutoCAD 22 05.04.2015 15:15
Отрисовка полосы отвода линейного объекта Агент СмиТ Программирование 10 06.11.2012 10:05
Получение разрешения на строительство объекта капитального строительства maxummm Прочее. Архитектура и строительство 18 25.08.2010 20:31
Толщина шрифта текстового объекта в пользовательской линии ffpetrov AutoCAD 3 04.01.2007 12:17