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

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

заполнение контуров условными знаками

Ответ
Поиск в этой теме
Непрочитано 04.08.2010, 03:47 #1
заполнение контуров условными знаками
АлексЮстасу
 
топограф, технолог
 
Москва
Регистрация: 24.05.2009
Сообщений: 3,074

Есть программы для заполнения контуров площадных объектов условными знаками? Для заполнения регулярного - по прямоугольной сетке и в шахматном порядке, и нерегулярного, но через указанное среднее расстояние? И чтобы знаки не накладывались на границы контуров?
Такая программа очень нужна для картографов-топографов.
Просмотров: 21275
 
Непрочитано 04.08.2010, 04:20
#2
KAI

геологоразведка, строительство
 
Регистрация: 14.10.2003
Магадан
Сообщений: 311


Может поможет. Программа MINS_HATCH из пакета KAI-2001.
__________________
Лень - великий двигатель прогресса!
KAI вне форума  
 
Непрочитано 04.08.2010, 04:22
#3
n0str0m0

геолог
 
Регистрация: 02.09.2009
Тында, Дальний Восток
Сообщений: 413
<phrase 1=


Такая программа есть. Это Геоникс. Там в панели УТИЛИТЫ есть инструмент ШТРИХОВКА КОНТУРА БЛОКОМ. Выбираешь блок, выбираешь контур, указываешь шаг по Х, шаг по Y, угол штрихования и вперед. Блоки никогда не вылезут на контур, а при изменении контура штриховка тоже изменится, будет заполнять весь новый контур. Очень удобно.
http://www.csoft.ru/catalog/soft/geo...eonics-10.html
или на торренте
n0str0m0 вне форума  
 
Непрочитано 04.08.2010, 07:02
#4
MCAD


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


В СПДСе есть 2 команды:
spardarray - Массив по области
sppltarray - Раскладка плитки
MCAD вне форума  
 
Автор темы   Непрочитано 04.08.2010, 18:14
#5
АлексЮстасу

топограф, технолог
 
Блог
 
Регистрация: 24.05.2009
Москва
Сообщений: 3,074


Спасибо ответившим
Только покупать или ставить целый пакет из-за одной-двух функций нецелесообразно. Да и наверняка эти функции как-то будут связаны с идеологией пакета, т.е. потребуется что-то дополнительно учитывать, менять (это я про Геоникс).
АлексЮстасу вне форума  
 
Непрочитано 04.08.2010, 19:00
#6
Хмурый


 
Регистрация: 29.10.2004
СПб
Сообщений: 16,379


_superhatch из комплекта Express Tools опробована?
Хмурый вне форума  
 
Автор темы   Непрочитано 04.08.2010, 19:16
#7
АлексЮстасу

топограф, технолог
 
Блог
 
Регистрация: 24.05.2009
Москва
Сообщений: 3,074


Цитата:
Сообщение от Хмурый Посмотреть сообщение
_superhatch из комплекта Express Tools опробована?
Пытался. Но моего умища не хватает получить иной результат, кроме зависания Автокада.
superhatch позволит заполнить нерегулярно?
АлексЮстасу вне форума  
 
Непрочитано 04.08.2010, 19:18
#8
Хмурый


 
Регистрация: 29.10.2004
СПб
Сообщений: 16,379


не позволяет
Хмурый вне форума  
 
Автор темы   Непрочитано 04.08.2010, 19:44
#9
АлексЮстасу

топограф, технолог
 
Блог
 
Регистрация: 24.05.2009
Москва
Сообщений: 3,074


Итого: ничего отдельного, самостоятельной программки заполнения площадей условными знаками нет?
АлексЮстасу вне форума  
 
Непрочитано 04.08.2010, 19:44
#10
VVA

Инженер LISP
 
Регистрация: 11.05.2005
Минск
Сообщений: 6,996


Цитата:
Сообщение от АлексЮстасу Посмотреть сообщение
superhatch позволит заполнить нерегулярно?
Для заполнения superhatch создай третий блок, в котором заполнены только четные или нечетные места матрицы и штрихуй им
__________________
Как использовать код на Лиспе читаем здесь
VVA вне форума  
 
Автор темы   Непрочитано 05.08.2010, 04:09
#11
АлексЮстасу

топограф, технолог
 
Блог
 
Регистрация: 24.05.2009
Москва
Сообщений: 3,074


Цитата:
Сообщение от VVA Посмотреть сообщение
Для заполнения superhatch создай третий блок, в котором заполнены только четные или нечетные места матрицы и штрихуй им
"третий" - это как? А второй блок какой?

Наконец, получилось хоть раз заполнить
Можно ли задать расстояния (строки/колонки) цифрами, а не прямоугольником?
И блоки все-таки наложились на границу, и обрезались ей. Что в топографии делаться не должно.
Заполнить двумя разными блоками одновременно (например, через один) вроде бы тоже нельзя.
АлексЮстасу вне форума  
 
Непрочитано 05.08.2010, 06:39
#12
ShaggyDoc

Thượng Tá Quân Đội Nhân Dân Việt Nam
 
Регистрация: 14.03.2005
44d32'44"С, 33d26'51"В
Сообщений: 13,372


Цитата:
Сообщение от АлексЮстасу Посмотреть сообщение
Итого: ничего отдельного, самостоятельной программки заполнения площадей условными знаками нет?
А те, кто делает подобное, и не будут разрабатывать самостоятельные "программки". Сейчас тебе надо штриховку блоком, потом откосы, потом дороги потом - все остатьные пять сотен топографических обозначений. А это все делается в комплексе.

Так что "программки" делай сам. Это просто. Например:
Код:
[Выделить все]
(defun ru-draw-block-hatch (header 
                            block_lib
                            block_name
                            scale
                            dx
                            dy
                            is_chess
                            ang_deg
                            / contour_ent lstbox lstver lx ly nx nxt ny nyt sm t0 tmax tt x x0 xmax y y0 ymax)
    
  ;|
 Штриховка блоком. Аргументы:
 Header	- заголовок
 block_lib       - макроблок
 block_name       - блок
 scale    - масштаб блока мм/бум
 dx	    - интервал по Х мм/бум
 dy       - интервал по У мм/бум
 is_chess     - признак шахматности
 ang_deg - поворот блока
 Примеры:
(ru-draw-block-hatch "Штриховка блоком" "land\\ru-lib-topo"  "ru_topo_0032"  1 8 8 T 0)
(ru-draw-block-hatch "Штриховка блоком" "common\\ru-lib-common" "ru_circle_and_cross_unit" 1  3  3 NIL 45)

|;
    (ru-app-begin)
    (if (ru-block-lib-insert block_lib block_name)
        (progn
            (setq dx    (ru-conv-millimeter-in-paper-to-unit dx)
                  dy    (ru-conv-millimeter-in-paper-to-unit dy)
                  scale (ru-conv-millimeter-in-paper-to-unit scale)
            ) ;_ end of setq
            ;; между рядами
            (if is_chess
                (setq sm (/ dy 2.0))
                (setq sm 0)
            ) ;_ end of if
            (if (setq lstVer (ru-pline-make-any-contour Header t NIL))
                (progn
                    (setq contour_ent (entlast))
                    ;; рисуем сетку
                    (princ "\nЖдите, рисую...\n")
                    (setq lstBox (ru-geom-bound-box (car lstVer))
                          t0     (cadr lstbox)
                          x0     (car t0)
                          y0     (cadr t0)
                          tmax   (car lstbox)
                          xmax   (car tmax)
                          ymax   (cadr tmax)
                          x      x0
                          y      y0
                          lx     (- xmax x0)
                          ly     (- ymax y0)
                          nx     (fix (/ lx dx))
                          ny     (fix (/ ly dy))
                          nxt    0
                          nyt    0
                    ) ;_ end of setq
                    (repeat (1+ nx)
                        (setq nxt (1+ nxt))
                        (repeat (1+ ny)
                            (setq nyt (1+ nyt)
                                  tt  (list X Y)
                            ) ;_ end of setq
                            (if (ru-match-is-even nyt)
                                (setq tt (polar tt 0 sm))
                            ) ;_ end of if

                            (if (ru-geom-is-point-in-contour tt (car lstVer))
                                (ru-block-insert-obj
                                    block_name
                                    tt
                                    scale
                                    scale
                                    scale
                                    (ru-conv-deg-to-rad ang_deg)
                                ) ;_ end of ru-block-insert-obj
                            ) ;_ end of if
                            (setq Y (+ Y dy))

                        )                                                      
                        (setq y   y0
                              nyt 0
                              X   (+ x dx)
                        ) ;_ end of setq
                    )                                                     
                    (if (ru-dlg-yes-cml "Стереть контур")
                        (entdel contour_ent)
                    ) ;_ end of if
                ) ;_ end of progn
            ) ;_ end of if
        ) ;_ end of progn
    ) ;_ end of if
    (ru-app-end)
    (princ)
) ;_ end of defun
Во время работы см. рис.1, результат - рис 2.
Миниатюры
Нажмите на изображение для увеличения
Название: xml_topo_hatch_block.png
Просмотров: 681
Размер:	9.8 Кб
ID:	43279  Нажмите на изображение для увеличения
Название: topo_hatch_block.png
Просмотров: 681
Размер:	5.1 Кб
ID:	43280  
ShaggyDoc вне форума  
 
Автор темы   Непрочитано 05.08.2010, 11:41
#13
АлексЮстасу

топограф, технолог
 
Блог
 
Регистрация: 24.05.2009
Москва
Сообщений: 3,074


Цитата:
Сообщение от ShaggyDoc Посмотреть сообщение
Так что "программки" делай сам. Это просто. Например:
[code](defun ru-draw-block-hatch (header
block_lib
block_name
scale
dx
dy
is_chess
ang_deg
/ contour_ent lstbox lstver lx ly nx nxt ny nyt sm t0 tmax tt x x0 xmax y y0 ymax)

;|
Штриховка блоком. Аргументы:
Header - заголовок
block_lib - макроблок
block_name - блок
scale - масштаб блока мм/бум
dx - интервал по Х мм/бум
dy - интервал по У мм/бум
is_chess - признак шахматности
ang_deg - поворот блока
Примеры:
(ru-draw-block-hatch "Штриховка блоком" "land\\ru-lib-topo" "ru_topo_0032" 1 8 8 T 0)
(ru-draw-block-hatch "Штриховка блоком" "common\\ru-lib-common" "ru_circle_and_cross_unit" 1 3 3 NIL 45)
Этот "block_lib - макроблок" - это что такое? Остальное вроде бы все понятно.
Это название файла с блоками ("ru-lib-topo")? А "land\\" - это какое-то место, где лежит этот файл с блоками?
И как правильно задать этот параметр block_lib, если блок описан в самом рабочем файле?
АлексЮстасу вне форума  
 
Непрочитано 05.08.2010, 14:46
#14
ShaggyDoc

Thượng Tá Quân Đội Nhân Dân Việt Nam
 
Регистрация: 14.03.2005
44d32'44"С, 33d26'51"В
Сообщений: 13,372


Цитата:
Этот "block_lib - макроблок" - это что такое? Остальное вроде бы все понятно.
Это название файла с блоками ("ru-lib-topo")? А "land\\" - это какое-то место, где лежит этот файл с блоками?
И как правильно задать этот параметр block_lib, если блок описан в самом рабочем файле?
Ну, ты же не сможешь этим воспользоваться. Это фактически - алгоритм. Все подробности были в книге "САПР на базе AutoCAD - как это делается".

"land\\", естественно, какое-то место, о котором знает программа.
block_lib - макроблок, библиотека блоков - dwg-файл, в котором есть куча маленьких блочишек.
block_name - имя конкретного блочишки которым надо "штриховать".

А в "рабочем файле" этого блока может и не быть. Кто его там опишет? Если есть - будет использован, а нету - прилетит из библиотеки.
ShaggyDoc вне форума  
 
Автор темы   Непрочитано 05.08.2010, 17:07
#15
АлексЮстасу

топограф, технолог
 
Блог
 
Регистрация: 24.05.2009
Москва
Сообщений: 3,074


Цитата:
Сообщение от ShaggyDoc Посмотреть сообщение
Ну, ты же не сможешь этим воспользоваться. Это фактически - алгоритм. Все подробности были в книге "САПР на базе AutoCAD - как это делается".

"land\\", естественно, какое-то место, о котором знает программа.
block_lib - макроблок, библиотека блоков - dwg-файл, в котором есть куча маленьких блочишек.
block_name - имя конкретного блочишки которым надо "штриховать".

А в "рабочем файле" этого блока может и не быть. Кто его там опишет? Если есть - будет использован, а нету - прилетит из библиотеки.
Т.е. я использовать данный лисп не смогу?
Файл с малюсенькими блочишечками у меня, конечно ж, есть. Только как его для этой программы подключить?

Последний раз редактировалось АлексЮстасу, 05.08.2010 в 17:26.
АлексЮстасу вне форума  
 
Непрочитано 15.08.2010, 15:52
#16
Nikolays

INJENER
 
Регистрация: 03.05.2007
Kazakhstan
Сообщений: 161


есть набор утилит kelf называется посмотри в загрузках
Nikolays вне форума  
 
Автор темы   Непрочитано 15.08.2010, 23:56
#17
АлексЮстасу

топограф, технолог
 
Блог
 
Регистрация: 24.05.2009
Москва
Сообщений: 3,074


Цитата:
Сообщение от Nikolays Посмотреть сообщение
есть набор утилит kelf называется посмотри в загрузках
Сейчас не могу его найти.
Но я его когда-то скачал. Жаль только, что он не ставится из-за отсутствия файла интерфейса Kelf.cui
АлексЮстасу вне форума  
 
Непрочитано 16.08.2010, 06:18
#18
Nikolays

INJENER
 
Регистрация: 03.05.2007
Kazakhstan
Сообщений: 161


Загружай файл меню kite.mns, а файл kite.cui сам образуется,если надо сброшу на email, у меня стоит и нормально работает включая и 2009 АКАД
Nikolays вне форума  
 
Автор темы   Непрочитано 16.08.2010, 12:25
#19
АлексЮстасу

топограф, технолог
 
Блог
 
Регистрация: 24.05.2009
Москва
Сообщений: 3,074


Цитата:
Сообщение от Nikolays Посмотреть сообщение
Загружай файл меню kite.mns, а файл kite.cui сам образуется,если надо сброшу на email, у меня стоит и нормально работает включая и 2009 АКАД
Получилось, заработало, спасибо!
Интересный пакет.
О заполнении знаками:
1. нет нерегулярного заполнения
2. знаки почему-то вылезают за указанную границу. В некоторых случаях вообще все заполняющие знаки оказываются за пределами площади. (похоже, что за базовую точку программа принимает точку вставки образца знака или что-то в этом роде)
АлексЮстасу вне форума  
 
Непрочитано 17.08.2010, 06:32
#20
Nikolays

INJENER
 
Регистрация: 03.05.2007
Kazakhstan
Сообщений: 161


граница штриховки должна быть замкнутой полилинией и иметь нулевую отметку,если значки оказываются за пределами площади значит граница имеет какую то отметку по высоте
Nikolays вне форума  
 
Автор темы   Непрочитано 17.08.2010, 22:48
#21
АлексЮстасу

топограф, технолог
 
Блог
 
Регистрация: 24.05.2009
Москва
Сообщений: 3,074


Цитата:
Сообщение от Nikolays Посмотреть сообщение
граница штриховки должна быть замкнутой полилинией и иметь нулевую отметку,если значки оказываются за пределами площади значит граница имеет какую то отметку по высоте
Это тоже слабость программы. Ведь заранее создавать замкнутые контуры на топографических планах заметно трудоемко. Контуры растительности и т.п. бывают очень замысловатыми, с "островами" и т.д.
Специальная команда Автокада для создания таких границ - Boundary (как я не раз на форумах уже писал, да и совсем не один я) - работает некорректно, неточно или не работает вовсе.
Ненулевая высота контура растительности, согласен, случай, сорее, экзотический, но было бы неплохо и его учесть. И работать не только с полилиниями, но и с 3Дполилиниями.
АлексЮстасу вне форума  
 
Непрочитано 17.08.2010, 22:49
#22
Кулик Алексей aka kpblc
Moderator

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


Цитата:
Сообщение от АлексЮстасу Посмотреть сообщение
работать не только с полилиниями, но и с 3Дполилиниями.
А в какой плоскости и на какой высоте тогда располагать объекты штриховки?
__________________
Моя библиотека lisp-функций
---
Обращение ко мне - на "ты".
Все, что сказано - личное мнение.
Кулик Алексей aka kpblc вне форума  
 
Автор темы   Непрочитано 18.08.2010, 00:03
#23
АлексЮстасу

топограф, технолог
 
Блог
 
Регистрация: 24.05.2009
Москва
Сообщений: 3,074


Цитата:
Сообщение от Кулик Алексей aka kpblc Посмотреть сообщение
А в какой плоскости и на какой высоте тогда располагать объекты штриховки?
В любом случае, конечно, заполняющие знаки нужно кинуть в сердцах подальше от контура.
АлексЮстасу вне форума  
 
Непрочитано 18.08.2010, 06:30
#24
Nikolays

INJENER
 
Регистрация: 03.05.2007
Kazakhstan
Сообщений: 161


при обработки съёмки надо придерживаться правила, отрисовывать все площадные объекты которые будут заполняться условными знаками замкнутыми полилиниями,перед штриховкой площади нужно обнулить границу контура, если она не нулевая это всё делается элементарно и без проблем
Nikolays вне форума  
 
Непрочитано 18.08.2010, 07:01
#25
ShaggyDoc

Thượng Tá Quân Đội Nhân Dân Việt Nam
 
Регистрация: 14.03.2005
44d32'44"С, 33d26'51"В
Сообщений: 13,372


Штриховка (хоть "образцами", хоть блоками) - условность черчения. В частном случае - топографического. Разумется такой "условный знак" должен быть выполнен в одной плоскости. Применительно к Автокаду - это плоскость Х-У текущей ПСК (какая бы она не была). 3D полилинии для контуров тут не пойдут. Если хотите в 3D - ставьте каким-то образом и 3D-изображения знаков. Но это сложно и не нужно.

Разумеется и программы должны всегда рисовать плоские изначально изображения в текущей ПСК. Очень часто авторы программ про это забывают и они работают у них только в МСК.
ShaggyDoc вне форума  
 
Автор темы   Непрочитано 18.08.2010, 13:23
#26
АлексЮстасу

топограф, технолог
 
Блог
 
Регистрация: 24.05.2009
Москва
Сообщений: 3,074


Цитата:
Сообщение от Nikolays Посмотреть сообщение
при обработки съёмки надо придерживаться правила, отрисовывать все площадные объекты которые будут заполняться условными знаками замкнутыми полилиниями,перед штриховкой площади нужно обнулить границу контура, если она не нулевая это всё делается элементарно и без проблем
При создании планов и карт нужно придерживаться правила вычерчивать все границы без дублирования. После вычерчивания полуавтоматическими инструментами обеспечивается примыкание линий границ и разбивание (создание узлов) на пересечениях линий границ. Для получения топологически корректной модели. Которую с помощью полуавтоматических инструментов можно использовать для формирования площадных объектов в виде замкнутых полигонов (или регионов) или в виде центроидов-наборов контуров, составляющих границы или просто наборов контуров, составляющих границы.

Кстати, при существующем требовании замкнутой полилинии kelf ведь не сможет заполнять контуры с "дырками".

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

ShaggyDoc - есть реальные и распространенные случаи, когда 3D полилинии для контуров нужны. Это когда заказчикам нужна гидрография, дорожная сеть и объекты рельефа еще и как структурные линии рельефа. Тогда эти объекты вычерчиваются 3D полилиниями. А все они могут являться границами площадных объектов.

Конечно, заполняющие знаки вполне нормально держать на нулевой высоте. А вот промахиваться этими знаками мимо контура, из чего бы он ни состоял, и на какой бы высоте ни лежал - как то странно.

Уже сейчас почти все заказчики хотят отметки и горизонтали на своей высоте. Часть заказчиков хочет еще и гидрографию с дорожной сетью в виде 3Д объектов. И все больше заказчиков, которые хотят 3Д карту, полную 3Д модель. Почему бы те же заполняющие знаки - каждый - не поместить на высоте модели поверхности? Пусть это сейчас и звучит фантазийно.
АлексЮстасу вне форума  
 
Непрочитано 16.02.2011, 17:39
#27
BadB_85


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


я извиняюсь.тут такое дело...искал как раз тоже самое.у меня 4 Га топосъемки.надо ее заполнить условными знаками.вот прочитал,но не до конца все понял.а точнее мало чего понял.сделал ваш лисп который вы посоветовали(надеюсь это не считается за кражу) и что дальше то?как мне это все заполнить тем же сенокосом????
BadB_85 вне форума  
 
Непрочитано 16.02.2011, 18:05
#28
Nikolays

INJENER
 
Регистрация: 03.05.2007
Kazakhstan
Сообщений: 161


в справке всё написано

Последний раз редактировалось Nikolays, 16.02.2011 в 18:12.
Nikolays вне форума  
 
Непрочитано 17.02.2011, 09:58
#29
BadB_85


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


эм.в какой справке?и где мне найти эту примочку kelf??
BadB_85 вне форума  
 
Непрочитано 17.12.2015, 17:34
#30
Timbu


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


Помогите разобраться с этим кодом, как все таки мне его доделать под свои нужды. Миниатюры Рис1 и Рис 2 это как раз то что мне нужно.
в этих строках мне нужно внесли изменения, в каких еще?
(ru-draw-block-hatch "Штриховка блоком" "land\\ru-lib-topo" "ru_topo_0032" 1 8 8 T 0)
(ru-draw-block-hatch "Штриховка блоком" "common\\ru-lib-common" "ru_circle_and_cross_unit" 1 3 3 NIL 45)
что такое набор утилит kelf , вернее для чего он? в общем можно подробнее описать как сделать из этого рабочий лисп. Просто я слабо пока в этом разбираюсь, но такой лисп был бы крайне полезен.

помогите пожалуйста разобраться с этим кодом. Я очень слабо разбираюсь в этом. Как все таки из этого сделать рабочий лисп? примеры приложенные к описанию кода это как раз то что нужно.
я понимаю что он почти готовый но нужно заменить названия файлов и пути к ним, в этих строках :
(ru-draw-block-hatch "Штриховка блоком" "land\\ru-lib-topo" "ru_topo_0032" 1 8 8 T 0)
(ru-draw-block-hatch "Штриховка блоком" "common\\ru-lib-common" "ru_circle_and_cross_unit" 1 3 3 NIL 45)
где еще? в общем можно подробнее расписать что нужно отредактировать ?
Миниатюры
Нажмите на изображение для увеличения
Название: topo_hatch_block.png
Просмотров: 85
Размер:	5.1 Кб
ID:	162480  

Последний раз редактировалось Кулик Алексей aka kpblc, 17.12.2015 в 19:52.
Timbu вне форума  
 
Автор темы   Непрочитано 17.12.2015, 17:58
#31
АлексЮстасу

топограф, технолог
 
Блог
 
Регистрация: 24.05.2009
Москва
Сообщений: 3,074


Цитата:
Сообщение от Timbu Посмотреть сообщение
в общем можно подробнее расписать что нужно отредактировать ?
Ответ от автора кода:
Цитата:
Сообщение от ShaggyDoc Посмотреть сообщение
Ну, ты же не сможешь этим воспользоваться. Это фактически - алгоритм. Все подробности были в книге "САПР на базе AutoCAD - как это делается".
Поищите работающие альтернативы. Например: http://geodesist.ru/forum/threads/za...kom-vlx.14717/
__________________
количество моих сообщений не говорит о знании Автокада
АлексЮстасу вне форума  
 
Непрочитано 17.12.2015, 22:25 заполнение контуров условными знаками
#32
Nikolays

INJENER
 
Регистрация: 03.05.2007
Kazakhstan
Сообщений: 161


скачай menuGEO и будет тебе хорошо
Nikolays вне форума  
 
Непрочитано 03.01.2024, 12:02
#33
Ingpro


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


Возможно ли упростить код из поста #12, убрав из него блоки и пути к ним и заменить блоки на окружности или точки?
Заполнить выбранные объекты (rectangle, circle, lwpolyline, polyline) окружностями ∅50 (или точками, если это проще)
в шахматном порядке, с выбором шага (если возможно, с указанием отступа, но можно и без него).
В прямоугольниках, конечно, можно применить массив, но в круге или многоугольнике надо потом
удалять лишние окружности за пределами фигуры, что не очень удобно.
Код:
[Выделить все]
 
(defun ru-draw-block-hatch (header 
                            block_lib
                            block_name
                            scale
                            dx
                            dy
                            is_chess
                            ang_deg
                            / contour_ent lstbox lstver lx ly nx nxt ny nyt sm t0 tmax tt x x0 xmax y y0 ymax)
    
  ;|
 Штриховка блоком. Аргументы:
 Header	- заголовок
 block_lib       - макроблок
 block_name       - блок
 scale    - масштаб блока мм/бум
 dx	    - интервал по Х мм/бум
 dy       - интервал по У мм/бум
 is_chess     - признак шахматности
 ang_deg - поворот блока
 Примеры:
(ru-draw-block-hatch "Штриховка блоком" "land\\ru-lib-topo"  "ru_topo_0032"  1 8 8 T 0)
(ru-draw-block-hatch "Штриховка блоком" "common\\ru-lib-common" "ru_circle_and_cross_unit" 1  3  3 NIL 45)

|;
    (ru-app-begin)
    (if (ru-block-lib-insert block_lib block_name)
        (progn
            (setq dx    (ru-conv-millimeter-in-paper-to-unit dx)
                  dy    (ru-conv-millimeter-in-paper-to-unit dy)
                  scale (ru-conv-millimeter-in-paper-to-unit scale)
            ) ;_ end of setq
            ;; между рядами
            (if is_chess
                (setq sm (/ dy 2.0))
                (setq sm 0)
            ) ;_ end of if
            (if (setq lstVer (ru-pline-make-any-contour Header t NIL))
                (progn
                    (setq contour_ent (entlast))
                    ;; рисуем сетку
                    (princ "\nЖдите, рисую...\n")
                    (setq lstBox (ru-geom-bound-box (car lstVer))
                          t0     (cadr lstbox)
                          x0     (car t0)
                          y0     (cadr t0)
                          tmax   (car lstbox)
                          xmax   (car tmax)
                          ymax   (cadr tmax)
                          x      x0
                          y      y0
                          lx     (- xmax x0)
                          ly     (- ymax y0)
                          nx     (fix (/ lx dx))
                          ny     (fix (/ ly dy))
                          nxt    0
                          nyt    0
                    ) ;_ end of setq
                    (repeat (1+ nx)
                        (setq nxt (1+ nxt))
                        (repeat (1+ ny)
                            (setq nyt (1+ nyt)
                                  tt  (list X Y)
                            ) ;_ end of setq
                            (if (ru-match-is-even nyt)
                                (setq tt (polar tt 0 sm))
                            ) ;_ end of if

                            (if (ru-geom-is-point-in-contour tt (car lstVer))
                                (ru-block-insert-obj
                                    block_name
                                    tt
                                    scale
                                    scale
                                    scale
                                    (ru-conv-deg-to-rad ang_deg)
                                ) ;_ end of ru-block-insert-obj
                            ) ;_ end of if
                            (setq Y (+ Y dy))

                        )                                                      
                        (setq y   y0
                              nyt 0
                              X   (+ x dx)
                        ) ;_ end of setq
                    )                                                     
                    (if (ru-dlg-yes-cml "Стереть контур")
                        (entdel contour_ent)
                    ) ;_ end of if
                ) ;_ end of progn
            ) ;_ end of if
        ) ;_ end of progn
    ) ;_ end of if
    (ru-app-end)
    (princ)
) ;_ end of defun
Миниатюры
Нажмите на изображение для увеличения
Название: Image 2.png
Просмотров: 12
Размер:	28.4 Кб
ID:	260823  
Ingpro вне форума  
 
Непрочитано 03.01.2024, 12:36
#34
Кулик Алексей aka kpblc
Moderator

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


https://www.autodesk.com/blogs/autoc...ls-superhatch/ ?
Всю тему не пересматривал, может, уже и показывали.
__________________
Моя библиотека lisp-функций
---
Обращение ко мне - на "ты".
Все, что сказано - личное мнение.
Кулик Алексей aka kpblc вне форума  
 
Непрочитано 03.01.2024, 14:13
#35
Ingpro


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


Цитата:
Сообщение от Кулик Алексей aka kpblc Посмотреть сообщение
https://www.autodesk.com/blogs/autoc...ls-superhatch/ ?
Там кучу всего надо указать... и непонятно поддерживается ли шахматный порядок... блоки не нужны...
Да и Express есть или нет...
Хотелось бы просто указать объекты, указать шаг и end... Потом мне нужно будет выбрать подобные и посмотреть количество.
Можно ли всё-таки подправить код?

Последний раз редактировалось Ingpro, 03.01.2024 в 14:34.
Ingpro вне форума  
Ответ
Вернуться   Форум DWG.RU > Программное обеспечение > AutoCAD > заполнение контуров условными знаками

Опции темы Поиск в этой теме
Поиск в этой теме:

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