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

Вернуться   Форум DWG.RU > Программное обеспечение > Программирование > LISP > Преобразовать штриховку в полилинию (не контур)

Преобразовать штриховку в полилинию (не контур)

Ответ
Поиск в этой теме
Непрочитано 30.08.2023, 12:28 #1
Преобразовать штриховку в полилинию (не контур)
Ingpro
 
Регистрация: 11.07.2022
Сообщений: 396

Добрый день.
Есть множество штриховок без контура, выглядят, как полилиния.
Возможно ли программно преобразовать выбранные штриховки в полилинии с заданной глобальной шириной
(или с шириной 0), или с возможностью указать ширину.
Если это невыполнимо, возможно ли контур полилинии преобразовать в полилинию с глобальной шириной, как у контура (или с шириной 0)? Спасибо.

Миниатюры
Нажмите на изображение для увеличения
Название: SOLID.png
Просмотров: 104
Размер:	15.0 Кб
ID:	258372  Нажмите на изображение для увеличения
Название: Контур в ПЛ2.png
Просмотров: 103
Размер:	15.4 Кб
ID:	258373  

Просмотров: 1407
 
Непрочитано 30.08.2023, 12:56
#2
gumel


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


Можно контур штриховки воссоздать. В диалоговом окне редактора штриховок - > recreate boundary -> polyline -> no
gumel вне форума  
 
Автор темы   Непрочитано 30.08.2023, 13:38
#3
Ingpro


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


Цитата:
Сообщение от gumel Посмотреть сообщение
Можно контур штриховки воссоздать
Это я знаю... И лисп такой есть...
Ingpro вне форума  
 
Непрочитано 30.08.2023, 14:02
1 | #4
kp+

идущий по граблям
 
Регистрация: 26.05.2005
Сообщений: 5,018


А дальше - построить между границами контура среднюю линию. Например, средствами pltools. В части средней линии там не самый продвинутый алгоритм, но т.к. ширина постоянная, его будет достаточно. Можно и другим лиспом, была большая тема на этот счет.
При некоторой сноровке можно дописать немного кода и масштабировать этот увлекательный процесс сразу на множество контуров.
kp+ вне форума  
 
Автор темы   Непрочитано 30.08.2023, 14:19
#5
Ingpro


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


Цитата:
Сообщение от kp+ Посмотреть сообщение
масштабировать этот увлекательный процесс сразу на множество контуров
именно множество контуров...
а штриховку SOLID в ПЛ нереально? SOLID по сути - заливка и ПЛ - заливка?

Последний раз редактировалось Ingpro, 30.08.2023 в 15:04.
Ingpro вне форума  
 
Непрочитано 30.08.2023, 14:26
1 | 1 #6
kp+

идущий по граблям
 
Регистрация: 26.05.2005
Сообщений: 5,018


Надо как-то объяснить автогаду, то, что буквально очевидно для человека. Что это не гадкий утенок площадной объект "штриховка", а скрытый в нем лебедь линейный объект "незамкнутая полилиния". Кто осуществит такое (например, с помощью нейросетей), может, не озолотится, но получит тонны респекта и уважухи.
А недопрограммистам вроде меня проще работать с линейными объектами, т.е. в данном случае границами штриховеи.
kp+ вне форума  
 
Автор темы   Непрочитано 05.09.2023, 14:12
#7
Ingpro


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


Цитата:
Сообщение от kp+ Посмотреть сообщение
Кто осуществит такое (например, с помощью нейросетей), может, не озолотится, но получит тонны респекта и уважухи.
Есть решение, но лисп HCEN работает в zwcad, это видно на gif.
На изображении показано то, что мне нужно, штриховки преобразуются в полилинии,
но к сожалению у меня в AutoCAD 2015 rus программа создает только контуры штриховок.

Пишет в КС:
HCEN.lsp успешно загружено.
Команда: ; ошибка: неверный тип аргумента: VLA-OBJECT nil.
Если подскажете, что нужно подправить в лиспе, очень выручите... Спасибо...
Вот ссылка на форум, я не знаю могу ли я приложить код?
Convert Hatching to Polyline - Page 2 - AutoLISP, Visual LISP & DCL - AutoCAD Forums
Почему-то ссылка не работает
Миниатюры
Нажмите на изображение для увеличения
Название: HCEN zwcad.gif
Просмотров: 34
Размер:	382.3 Кб
ID:	258495  
Вложения
Тип файла: zip HCEN.zip (3.1 Кб, 3 просмотров)
Ingpro вне форума  
 
Непрочитано 05.09.2023, 15:11
#8
kp+

идущий по граблям
 
Регистрация: 26.05.2005
Сообщений: 5,018


Ссылка не работает, потому что к ее адресу прицепилась куча мусора. Но, немного выругавшись, смог указать браузеру верный путь на тот форум.
Там, среди прочего, есть пример dwg, на котором должен работать ваш код. Но скачать его могут только участники того форума.
Выложите здесь, тогда будет о чем говорить.
kp+ вне форума  
 
Автор темы   Непрочитано 05.09.2023, 15:37
#9
Ingpro


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


Цитата:
Сообщение от kp+ Посмотреть сообщение
Там, среди прочего, есть пример dwg
Прикладываю dwg...
Вложения
Тип файла: dwg
DWG 2013
Hatching - pline.dwg (61.9 Кб, 5 просмотров)
Ingpro вне форума  
 
Непрочитано 05.09.2023, 16:26
#10
kp+

идущий по граблям
 
Регистрация: 26.05.2005
Сообщений: 5,018


Глючит где-то на создании объектов с отступом. Видимо, в зверькаде эта функция работает не совсем так, как в акаде. Честно говоря, не ясна задумка автора, зачем он это сделал.
А вам, наверное, проще всего скачать демку зверькада и сделать все в ней, если в ней код нормально работает.
kp+ вне форума  
 
Непрочитано 09.09.2023, 08:26
#11
koMon


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


Ingpro, откуда берутся такие штриховки? на 1-м рисунке видно, что что каждая штриховка представляет собой всего один сегмент полилинии. эти штриховки все такие или есть многосегментные, как на рис. 2?
__________________
K Lisp
koMon вне форума  
 
Автор темы   Непрочитано 09.09.2023, 09:00
#12
Ingpro


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


Цитата:
Сообщение от koMon Посмотреть сообщение
откуда берутся такие штриховки
Чертежи сделаны в неизвестной программе или приложении, связи с разработчиком нет. На рис 1 показаны штриховки без контура, скорее всего разбиты прокси-объекты... Контур штриховкам можно создать, а вот преобразовать этот контур в полилинию (рис. 2) - в этом вопрос.
Или выполнить все в одной программе:
1 вариант - сразу создать полилинию по границам штриховки,
2 вариант - создать контуры для штриховок, а затем эти контуры заменить полилинией.
Это нужно для корректировки, а у штриховки нет длины, её невозможно растянуть...
Лисп из поста #7 был изменен, но работает некорректно, создает ПЛ не для всех штриховок, создает их в два слоя (наложение), на некоторых штриховках остаются линии контуров...
Вложения
Тип файла: dwg
DWG 2013
Штриховка в ПЛ.dwg (56.6 Кб, 1 просмотров)
Тип файла: zip HCEN2.zip (3.1 Кб, 0 просмотров)

Последний раз редактировалось Ingpro, 09.09.2023 в 09:37.
Ingpro вне форума  
 
Автор темы   Непрочитано 11.09.2023, 10:12
#13
Ingpro


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


Цитата:
Сообщение от koMon Посмотреть сообщение
штриховка представляет собой всего один сегмент полилинии
Штриховки все отдельные, есть прямые и дугообразные...
Я пытаюсь немного подкорректировать код, но, видимо, что-то делаю не так...

Do you want to inherit the color of the hatch to the polyline?
(Space Bar or any key - Yes / N - Current Color"
Заменяю в строке 79 "N" на "1", чтобы в команде не переключаться на англ. раскладку
Do you want to inherit the color of the hatch to the polyline?
(Space Bar or any key - Yes / 1 - Current Color"
Заменяю в строке 94 "N" на "1" (if (/= coloruseranswer "1")

Полилинии создаются текущим цветом, но в ком. строке пишет:
Команда: HCEN2R
Select Hatches :
Выберите объекты: Противоположный угол: найдено: 12
Выберите объекты:
Do you want to inherit the color of the hatch to the polyline? (Space Bar or any key - Yes / 1 - Current Color1
Неправильное ключевое слово.
Error: Функция отменена

Код:
[Выделить все]
 ; HCEN - 2023.09.06 exceed
; Draw CenterLine in hatch (straight feature or elbow feature shape)
; for structural member systems, trays, piping, ducts, etc.,
; updated 
; - Tested in autocad 2023 and zwcad 2022.
; - color inherit & delete original hatches option. (by user input)
;  This routine requires that the two line segments have the same length 
; and that length must be the shortest length.
; Straight, 90 degree elbow, 45 degree elbow, 30 degree elbow, etc. 
; Tilted cuts or odd shapes are not supported.
;  If the r value of the elbow is small and smaller than the two line 
; segment values above, an error may occur.

(defun C:HCEN2r (/ *error* thisdrawing util mspace myline index entl ent pss ss pssl 
               resultformula resultsum pent pobj ptype plength plist pclosed plistlen 
               pindex distlist p1 p2 pdist distlistlen dindex memorydist 
               widthconjecture 1dist resultlen rss breakptlist breakp1 breakp2 bpllen 
               bpindex bplistlen eobjlist eobjlistlen eindex remainlist 1obj 1objtype 
               1objsp 1objep bindex rssflag b1 rsslen rsindex rsofflist rs1 rsoff1 
               rsoff2 midptlist midpt rsoff1sp rsoff1ep mindex mflag 1midpt x delindex 
               delrss mss newmss m1 oss ossl oindex oent oobj each hyp_txt ssindex 
               ssslen colorlist sssindex sscolor ssent
               coloruseranswer deleteuseranswer
              ) 
  (vl-load-com)
  (setq thisdrawing (vla-get-activedocument (vlax-get-acad-object)))
  (defun *error* (msg) 
    (if (/= msg "Function cancelled") 
      (princ (strcat "\nError: " msg))
    )
    (setvar 'cmdecho oldcmdecho)
    (setvar 'peditaccept oldpeditaccept)
    (vla-EndUndoMark thisdrawing)
    (princ)
  )

  ;; Round Multiple  -  Lee Mac
  ;; Rounds 'n' to the nearest multiple of 'm'
  (defun LM:roundm (n m) 
    (* m (fix ((if (minusp n) - +) (/ n (float m)) 0.5)))
  )
  ;; Round To  -  Lee Mac
  ;; Rounds 'n' to 'p' decimal places
  (defun LM:roundto (n p) 
    (LM:roundm n (expt 10.0 (- p)))
  )
  (vla-EndUndoMark thisdrawing)
  (vla-startundomark thisdrawing)
  (setq oldpeditaccept 0)
  (setq oldpeditaccept (getvar 'peditaccept))
  (setq oldcmdecho 1)
  (setq oldcmdecho (getvar 'cmdecho))
  (setvar 'peditaccept 1)
  (setvar 'cmdecho 0)

  (setq util (vla-get-utility thisdrawing))
  (setq mspace (vla-get-modelspace thisdrawing))

  (if (setq entl (entlast)) 
    (progn 
      (setq entl (entlast))
    )
    (progn 
      (setq myline (vla-addline mspace 
                                (vlax-3d-point (list 0 0 0))
                                (vlax-3d-point (list 1 1 1))
                   )
      )
      (setq entl (entlast))
    )
  )
  (setq pss (ssadd))
  (princ "\n Select Hatches : ")
  (if (setq ss (ssget '((0 . "HATCH"))))
    (progn
      (setq ssslen (sslength ss))
      (setq colorlist '())
      (setq sssindex 0)
      (setq coloruseranswer (getstring "\n Do you want to inherit the color of the hatch to the polyline? (Space Bar or any key - Yes / 1 - Current Color"))
      (if (= coloruseranswer nil)
        (setq coloruseranswer "Y")
        (setq coloruseranswer (strcase coloruseranswer))
      )
      (repeat ssslen 
        (setq sssent (ssname ss sssindex))
        (setq sscolor (vlax-get-property 
                        (vlax-get-property (vlax-ename->vla-object sssent) 'truecolor)
                        'colorindex
                      )
        )
        ;(princ sscolor)
        (princ "\n")
        (command "_.hatchgenerateboundary" sssent "")
        (if (/= coloruseranswer "1")
          (vlax-put-property (vlax-ename->vla-object (entlast)) 'color sscolor)
        )
        (setq sssindex (+ sssindex 1))
      )
    
      (setq ssindex 0)
      (while (setq ent (entnext entl)) 
        (ssadd ent pss)
        (if (= ssindex 0) 
          (progn 
            (if (/= myline nil) 
              (vla-delete myline)
            )
          )
        )
        (setq entl ent)
        (setq ssindex (+ ssindex 1))
      )
      (sssetfirst nil pss)
      (setq pssl (sslength pss))
      (setq index 0)
      (setq resultformula "")
      (setq resultsum 0)
      (setq mss (ssadd))
    
      (repeat pssl 
        (setq pent (ssname pss index))
        (setq pobj (vlax-ename->vla-object pent))
        (setq ptype (vlax-get-property pobj 'entityname))
        (setq plength (vlax-get-property pobj 'length))
        (setq plist (vlax-safearray->list 
                      (vlax-variant-value (vlax-get-property pobj 'coordinates))
                    )
        )
        (setq pclosed (vlax-get-property pobj 'closed))
        (if (= pclosed :vlax-true) 
          (progn 
            (setq plist (append plist (list (car plist) (cadr plist))))
          )
          (progn)
        )
        (setq plistlen (length plist))
        (setq pindex 0)
        (setq distlist '())
        (repeat (- (/ plistlen 2) 1) 
          (setq p1 (list (nth pindex plist) (nth (+ pindex 1) plist)))
          (setq p2 (list (nth (+ pindex 2) plist) (nth (+ pindex 3) plist)))
          (setq pdist (distance p1 p2))
          (setq distlist (cons pdist distlist))
          (setq pindex (+ pindex 2))
        )
    
        (setq sorteddistlist (vl-sort distlist '<))
        (setq distlistlen (length sorteddistlist))
        (setq dindex 0)
        (setq memorydist -1)
        (setq widthconjecture 0)
        (repeat distlistlen 
          (setq 1dist (nth dindex sorteddistlist))
          (if 
            (and (= widthconjecture 0) 
                 (= (vl-princ-to-string memorydist) (vl-princ-to-string 1dist))
            )
            (setq widthconjecture 1dist)
          )
          (setq memorydist 1dist)
          (setq dindex (+ dindex 1))
        )
        (if (= widthconjecture 0)
          (setq widthconjecture (car sorteddistlist))
        )
        (setq dindex 0)
        (setq pindex 0)
        (setq breakptlist '())
        (setq distlist (reverse distlist))
        (repeat distlistlen 
          (setq 1dist (nth dindex distlist))
          (if (= (lm:roundto widthconjecture 0) (lm:roundto 1dist 0)) 
            (progn 
              (setq breakp1 (list (nth pindex plist) (nth (+ pindex 1) plist)))
              (setq breakp2 (list (nth (+ pindex 2) plist) (nth (+ pindex 3) plist)))
              (setq breakptlist (cons (list breakp1 breakp2) breakptlist))
            )
          )
          (setq dindex (+ dindex 1))
          (setq pindex (+ pindex 2))
        )
        (setq bplistlen (length breakptlist))
        (setq eobjlist (vlax-safearray->list (vlax-variant-value (vla-explode pobj))))
        (entdel pent)
        (setq eobjlistlen (length eobjlist))
        (setq eindex 0)
        (setq remainlist '())
        (setq rss (ssadd))
    
        (repeat eobjlistlen 
          (setq 1obj (nth eindex eobjlist))
          (setq 1objtype (vlax-get-property 1obj 'entityname))
          (cond 
            ((= 1objtype "AcDbArc")
             (setq remainlist (cons 1obj remainlist))
             (ssadd (vlax-vla-object->ename 1obj) rss)
            )
            ((= 1objtype "AcDbLine")
             (setq 1objsp (vlax-safearray->list 
                            (vlax-variant-value (vlax-get-property 1obj 'startpoint))
                          )
             )
             (setq 1objep (vlax-safearray->list 
                            (vlax-variant-value (vlax-get-property 1obj 'endpoint))
                          )
             )
             (if (/= (lm:roundto (distance 1objsp 1objep) 0) 0) 
               (progn 
                 (setq bindex 0)
                 (setq rssflag 0)
                 (repeat bplistlen 
                   (setq b1 (nth bindex breakptlist))
                   (if 
                     (or 
                       (and 
                         (= (lm:roundto (car (car b1)) 0) (lm:roundto (car 1objsp) 0))
                         (= (lm:roundto (cadr (car b1)) 0) 
                            (lm:roundto (cadr 1objsp) 0)
                         )
                         (= (lm:roundto (car (cadr b1)) 0) (lm:roundto (car 1objep) 0))
                         (= (lm:roundto (cadr (cadr b1)) 0) 
                            (lm:roundto (cadr 1objep) 0)
                         )
                       )
                       (and 
                         (= (lm:roundto (car (car b1)) 0) (lm:roundto (car 1objep) 0))
                         (= (lm:roundto (cadr (car b1)) 0) 
                            (lm:roundto (cadr 1objep) 0)
                         )
                         (= (lm:roundto (car (cadr b1)) 0) (lm:roundto (car 1objsp) 0))
                         (= (lm:roundto (cadr (cadr b1)) 0) 
                            (lm:roundto (cadr 1objsp) 0)
                         )
                       )
                     )
                     (progn 
                       (setq rssflag (+ rssflag 1))
                     )
                     (progn 
                     )
                   )
                   (setq bindex (+ bindex 1))
                 )
                 (if (/= rssflag 0) 
                   (progn 
                     (entdel (vlax-vla-object->ename 1obj))
                   )
                   (progn 
                     (setq remainlist (cons 1obj remainlist))
                     (ssadd (vlax-vla-object->ename 1obj) rss)
                   )
                 )
               )
               (progn 
                 (entdel (vlax-vla-object->ename 1obj))
               )
             )
            )
            (t
            )
          )
          (setq eindex (+ eindex 1))
        )
        (setq rsslen 0)
        (if rss 
          (progn 
            (setq rsslen (sslength rss))
            (setq rsindex 0)
            (setq rsofflist '())
    
            (setq bindex 0)
            (setq midptlist '())
            (repeat bplistlen 
              (setq bp1 (nth bindex breakptlist))
              (setq midpt (polar (car bp1) 
                                 (angle (car bp1) (cadr bp1))
                                 (/ (distance (car bp1) (cadr bp1)) 2)
                          )
              )
              (setq midptlist (cons midpt midptlist))
              (setq bindex (+ bindex 1))
            )
            (repeat rsslen 
              (setq rs1 (vlax-ename->vla-object (ssname rss rsindex)))
              (setq rsoff1 (car 
                             (vlax-safearray->list 
                               (vlax-variant-value 
                                 (vlax-invoke-method rs1 
                                                     'Offset
                                                     (* (/ widthconjecture 2) 1)
                                 )
                               )
                             )
                           )
              )
              (setq rsoff1sp (vlax-safearray->list 
                               (vlax-variant-value 
                                 (vlax-get-property rsoff1 'startpoint)
                               )
                             )
              )
              (setq rsoff1ep (vlax-safearray->list 
                               (vlax-variant-value (vlax-get-property rsoff1 'endpoint))
                             )
              )
              (setq miptlistlen (length midptlist))
              (setq mindex 0)
              (setq mflag 0)
              (repeat miptlistlen 
                (setq 1midpt (nth mindex midptlist))
                (if 
                  (or 
                    (and (= (rtos (car 1midpt) 2 2) (rtos (car rsoff1sp) 2 2)) 
                         (= (rtos (cadr 1midpt) 2 2) (rtos (cadr rsoff1sp) 2 2))
                    )
                    (and (= (rtos (car 1midpt) 2 2) (rtos (car rsoff1ep) 2 2)) 
                         (= (rtos (cadr rsoff1ep) 2 2) (rtos (cadr 1midpt) 2 2))
                    )
                  )
                  (progn 
                    (setq mflag (+ mflag 1))
                  )
                  (progn 
                  )
                )
                (setq mindex (+ mindex 1))
              )
              (if (= mflag 0) 
                (progn 
                  (entdel (vlax-vla-object->ename rsoff1))
                  (setq rsoff1 (car 
                                 (vlax-safearray->list 
                                   (vlax-variant-value 
                                     (vlax-invoke-method rs1 
                                                         'Offset
                                                         (* (/ widthconjecture 2) -1)
                                     )
                                   )
                                 )
                               )
                  )
                  (entdel (vlax-vla-object->ename rs1))
                )
                (progn 
                  (entdel (vlax-vla-object->ename rs1))
                )
              )
              (ssadd (vlax-vla-object->ename rsoff1) mss)
              (vlax-for x (vla-get-hyperlinks rsoff1) (vla-delete x))
              (vla-add (vlax-get-property rsoff1 'Hyperlinks) 
                       (vl-princ-to-string widthconjecture)
              )
              (setq rsindex (+ rsindex 1))
            )
          )
        )
        (setq index (+ index 1))
      )
      (setq newmss (ssadd))
      (setq mindex 0)
      (repeat (sslength mss) 
        (setq m1 (ssname mss mindex))
        ;(princ m1)
        (if (entget m1) 
          (progn 
            (ssadd m1 newmss)
          )
        )
        (setq mindex (+ mindex 1))
      )
      (sssetfirst nil newmss)
      (setq oss (ssadd))
      (setq entl (entlast))
      (command "_pedit" "_M" newmss "" "J" "0" "")
      (while (setq ent (entnext entl)) 
        (ssadd ent oss)
        (setq entl ent)
      )
      (sssetfirst nil oss)
    
      (setq ossl (sslength oss))
      (setq oindex 0)
      (repeat ossl 
        (setq oent (ssname oss oindex))
        (setq oobj (vlax-ename->vla-object oent))
        (vlax-for each (vlax-get-property oobj 'Hyperlinks) 
          (setq hyp_txt (strcat (vla-get-url each)))
        )
        (vlax-put-property oobj 'constantwidth (atoi hyp_txt))
        (vlax-for x (vla-get-hyperlinks oobj) (vla-delete x))
        (setq olen (vlax-get-property oobj 'length))
        (setq resultformula (strcat resultformula 
                                    (if (= oindex 0) "" " + ")
                                    (vl-princ-to-string olen)
                            )
        )
        (setq resultsum (+ resultsum olen))
        (setq oindex (+ oindex 1))
      )
    
      (princ "\n hatches count = ")
      (princ (sslength ss))
      (princ "\n plines count - ")
      (princ oindex)
      (princ "\n total lenght of you selected")
      (princ "\n ")
      (princ resultformula)
      (princ " = ")
      (princ resultsum)
      (command "erase" rss "")
      (command "erase" pss "")
      (if (= (sslength ss) oindex)
        (progn
          (setq deleteuseranswer (getstring "\n The number of hatches and polylines is the same. Are you sure you want to delete the original hatch? (SpaceBar or AnyKey - Yes / N - No)"))
          (if (= deleteuseranswer nil)
            (setq deleteuseranswer "Y")
            (setq deleteuseranswer (strcase deleteuseranswer))
          )
          (if (/= deleteuseranswer "N")
            (command "erase" ss "")
          )
        )
        (progn
          (princ "\n The number of hatches and polylines does not match. There may be a problem, so please check manually.")
        )
      )
      (sssetfirst nil oss)
    )
    (progn
      (princ "\n There are no hatches in the selection set. Please try again.")
    )
  )

  (setvar 'cmdecho oldcmdecho)
  (setvar 'peditaccept oldpeditaccept)
  (vla-EndUndoMark thisdrawing)
  (princ)
)
Запрос из строки 414 в ком. строку почему-то не выводится
(setq deleteuseranswer (getstring "\n The number of hatches and polylines is the same.
Are you sure you want to delete the original hatch? (SpaceBar or AnyKey - Yes / N - No)"))

Не подскажете в чём проблема?
Ingpro вне форума  
 
Непрочитано 11.09.2023, 17:33
#14
koMon


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


должно работать.
так а что надо? я так понимаю, что полилиниия должна поиметь слоевые и цветовые свойства штриховки ну и быть удалённой автоматом или как?
вот чел пишет в легенде правильные слова, но... какой-то огород нагородил, ппц(
__________________
K Lisp
koMon вне форума  
 
Автор темы   Непрочитано 11.09.2023, 20:15
#15
Ingpro


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


Цитата:
Сообщение от koMon Посмотреть сообщение
полилиния должна поиметь слоевые и цветовые свойства штриховки ну и быть удалённой автоматом
В коде есть выбор - полилиния может иметь слоевые и цветовые свойства штриховки или текущим слоем... Немного смущает то, что полилинии создаются в двойном экземпляре (т.е. линия на линии) - на всех штриховках... Это можно исправить?
Запрос из строки 414 в ком. строку не выводится, и поэтому нет возможности удалить штриховки, насчёт "огорода", тоже думаю, что как-то код написан по-быстрому, хоть и не особо понимаю...
Ingpro вне форума  
 
Непрочитано 11.09.2023, 21:08
#16
koMon


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


эмммм, по-быстрому 440 строк не напишешь)
__________________
K Lisp
koMon вне форума  
 
Автор темы   Непрочитано 11.09.2023, 21:24
#17
Ingpro


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


Цитата:
Сообщение от koMon Посмотреть сообщение
эмммм, по-быстрому 440 строк не напишешь)
Может так много и не надо?..
"In most (but not all) cases, the more concise solution is usually quicker". Lee Mac 11.11. 2010

Последний раз редактировалось Ingpro, 11.09.2023 в 21:31.
Ingpro вне форума  
 
Непрочитано 11.09.2023, 22:25
#18
koMon


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


damned leigh
ну вот действительно по-быстрому (в исходнике строк в ~4 раза меньше)) для штриховок solid с контуром из полилинии, т.е. контур штриховки не генерируется, а берётся прямо из её описания.
Вложения
Тип файла: rar Solid_pline_hatch_to_pline.fas.rar (3.8 Кб, 3 просмотров)
__________________
K Lisp
koMon вне форума  
 
Автор темы   Непрочитано 11.09.2023, 22:46
#19
Ingpro


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


Цитата:
Сообщение от koMon Посмотреть сообщение
для штриховок solid с контуром из полилинии, т.е. контур штриховки не генерируется, а берётся прямо из её описания.
Спасибо, koMon, только полилиния создается для вертикальных и дуговых штриховок, горизонтальные игнорируются, т.е. остаются штриховками... В ком. строке: Контур штриховки образован не только полилинией.
Но хорошо, что штриховки именно заменяются и полилинии в один слой...
Выделяю штриховки, в свойствах - Штриховка... Поворачиваю их, дело не в горизонтальном расположении...
Прикладываю dwg...
Если создать штриховки в AutoCad, то они все (независимо горизонтально, вертикально, под углом...) преобразуются в ПЛ, значит дело в косячном файле, который создан в стороннем приложении, так что программа Solid_pline_hatch_to_pline.fas работает правильно, ещё раз большое спасибо koMon.
Вложения
Тип файла: dwg
DWG 2013
Штриховки.dwg (32.7 Кб, 2 просмотров)
Тип файла: dwg
DWG 2013
Штриховки AutoCad.dwg (32.3 Кб, 0 просмотров)

Последний раз редактировалось Ingpro, 11.09.2023 в 23:55.
Ingpro вне форума  
 
Непрочитано 12.09.2023, 09:02
#20
koMon


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


дело не косячности файла а в контуре штриховки. штриховки, у которых контур состоит из отрезков и дуг пропускаются пока, потому что как я написал ранее, контур штриховки не генерится командой, а читается прямо из описания штриховки.
__________________
K Lisp
koMon вне форума  
 
Автор темы   Непрочитано 12.09.2023, 09:22
#21
Ingpro


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


Цитата:
Сообщение от koMon Посмотреть сообщение
штриховки, у которых контур состоит из отрезков и дуг пропускаются пока
Так эти штриховки вообще без контура, или я не так понимаю?..
А ещё, программу Solid_pline_hatch_to_pline.fas можно использовать для преобразования замкнутого контура в ПЛ.
Получается обратная задача программы Lee Mac - AdvancedPolyOutlineV1-1.lsp, которая создает контур ПЛ.
Миниатюры
Нажмите на изображение для увеличения
Название: Image 1.png
Просмотров: 6
Размер:	11.0 Кб
ID:	258645  
Ingpro вне форума  
 
Непрочитано 12.09.2023, 11:01
#22
koMon


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


Цитата:
Сообщение от Ingpro Посмотреть сообщение
Так эти штриховки вообще без контура, или я не так понимаю?..
не так) штриховка это запрограммированное визуальное отображение замкнутой области, ограниченной какими-то кривыми, которые жёстко записаны в определение штриховки, которое в свою очередь можно увидеть, посмотрев её dxf дамп. то что контур штриховки не виден вовсе не говорит о его отсутствии. к тому же если выбрать штриховку, то всегда можно увидеть захваты (grips) контура штриховки, которые кстати говоря, позволяют изменять штриховку динамически.

Цитата:
Сообщение от Ingpro Посмотреть сообщение
А ещё, программу Solid_pline_hatch_to_pline.fas можно использовать для преобразования замкнутого контура в ПЛ.
это как?
__________________
K Lisp

Последний раз редактировалось koMon, 12.09.2023 в 11:38.
koMon вне форума  
 
Автор темы   Непрочитано 12.09.2023, 11:14
#23
Ingpro


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


Цитата:
Сообщение от koMon Посмотреть сообщение
это как?
как на миниатюре из поста #21, заштриховать контур из замкнутой полилинии, а затем применить Solid_pline_hatch_to_pline - получим ПЛ у которой есть длина (например, длина арматурного стержня, хомута)...

Последний раз редактировалось Ingpro, 12.09.2023 в 11:28.
Ingpro вне форума  
 
Непрочитано 12.09.2023, 11:34
#24
koMon


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


Цитата:
Сообщение от Ingpro Посмотреть сообщение
как на миниатюре из поста #21, заштриховать контур из замкнутой полилинии, а затем применить Solid_pline_hatch_to_pline - получим ПЛ у которой есть длина (например, длина арматурного стержня, хомута)...
так, блин, разве это не было целью? но штриховка должна получаться из как бы полилинии с фиксированной шириной.
__________________
K Lisp
koMon вне форума  
 
Автор темы   Непрочитано 12.09.2023, 11:55
#25
Ingpro


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


Цитата:
Сообщение от koMon Посмотреть сообщение
разве это не было целью? но штриховка должна получаться из как бы полилинии с фиксированной шириной
Нет, изначально нужно было преобразовать выбранные штриховки в полилинии с заданной глобальной шириной (как у штриховки)... см. пост#1
Ingpro вне форума  
Ответ
Вернуться   Форум DWG.RU > Программное обеспечение > Программирование > LISP > Преобразовать штриховку в полилинию (не контур)

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

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


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Как преобразовать 3д тело в штриховку. BringTheCabbage AutoCAD 6 20.05.2020 12:21
Как преобразовать контур маскировки в обратно полилинию? ViKo$ AutoCAD 2 20.11.2019 11:16
Как преобразовать полилинию в сплайн Kotsar AutoCAD 20 02.08.2015 14:09
Как преобразовать штриховку в полигон? Olga_@@@ AutoCAD 13 08.05.2009 15:44