• Добро пожаловать на Форум пользователей ПО АСКОН. Пожалуйста, авторизуйтесь.
 

Уважаемые пользователи,

Хотим проинформировать вас о режиме работы регистрации на нашем сайте.

Зарегистрироваться возможно в рабочие дни, с 8:00 до 20:00 (мск).

Если у вас возникнут вопросы или потребуется дополнительная информация, не стесняйтесь обращаться к нашей службе поддержки. Вы можете связаться с нами по указанным контактным данным на нашем сайте.

Благодарим вас за понимание и сотрудничество. Мы ценим ваше терпение и стремимся предоставить вам лучший опыт использования нашего сервиса.

С уважением,
Команда Ascon

Создание контура по штриховке

Автор Sprinter500, 12.02.15, 17:59:33

« назад - далее »

0 Пользователи и 1 гость просматривают эту тему.

Sprinter500

Спасибо. Заработало. Действительно, надо же было сначала получить дубликат границ. Видать под вечер вчера уже сонный был, голова не варила.

Vitalij Lysanov

26.02.19, 23:28:12 #61 Последнее редактирование: 27.02.19, 00:05:13 от Vitalij Lysanov
Отчет по результатам изучения штриховок

И вначале про страшное слово Пррограммирование

Вот команда. Кривая по закону. Кто может сказать что это программирование. Панель с формулами в окошках. Включил, нарисовалось.

Чем панель Макро отличается от панели Кривая по закону.









Окно ничем не отличается, такие же формулы. Вокруг формул это просто рисунок орнамента. Есть программы которые еще лучше раскрашивают код.

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

В формуле, берем существующий шаг штриховки и добавляем случайное число в диапазоне от -0.5 до +0.5. И каждая штриховка будет уникальна.       
Аналогично и с углом штриховки.

Если бы эти формулы еще работали в видах....

Перебираем виды.

Находим штриховку.

Можно подсветить штриховку, а изменить?

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

В чертежах без видов изменить штриховки, это запросто.

Еще два оператора и штриховку можно закрасить.



           t = iDocument2D.ksGetObjParam( obj, par, LDefin2D.HATCH_PARAM_EX )   
           iDocument2D.ksColouringEx(16777164, par.boundaries)


Контур рисуется операторами:

     
           t = iDocument2D.ksGetObjParam( obj, par, LDefin2D.HATCH_PARAM_EX )   
           iDocument2D.ksStoreTmpGroup( par.boundaries )

 


Уже знакомые операторы изменяют свойства штриховки:

 

           par.step=par.step+(random.random()-0.5)
           par.ang=par.ang+10*(random.random()-0.5)





Выполнить макрос без редактирования еще легче.  В перечне навести и нажать Выполнить.

Второй способ запуска, нажать на файл с таким же текстом и расширением .rtw.






Инструкция для управления построением контура .

Аналогично открываем макрос в режиме редактирования. Перемещаем курсор в нужное место на чертеже и нажимаем F5.

Макрос выполнится, считаются координаты курсора и вокруг курсора построится контур.

Аналогично в Total Comander.
Становимся на файл и готовимся нажать Enter. Перед нажатием Enter перемещаем курсор по чертежу и нажимаем Enter. Контур на секунду подсветится. Расширение файлов .rtw




Ниже идет описание двух файлов.
Основа  файлов это запись макрорекордером на фрагменте или чертеже.

Для файла который чертит контур, добавлено всего несколько операторов. Это для справок, тут ничего не нужно изменять.


   

x=y=0                                                                                          # Обнуление переменных

ttt=iDocument2D.ksGetCursorPosition(x,y,0)                             # Чтение координат курсора

contur=iDocument2D.ksMakeEncloseContours(0, ttt[1], ttt[2] )  # Получаем контур вокруг
                                                                                                    # курсора

iDocument2D.ksStoreTmpGroup( contur )                                 # Отображаем контур












Второй файл немного сложнее, но основу не трогаем.
Управление  двумя формулами.   






 
          par.step=par.step+1*(random.random()-0.5)
                            К полученному шагу штриховки добавляем случайные числа
                             от нуля до единицы.
                     

          par.ang=par.ang+10*(random.random()-0.5)
                           Тоже самое с углом штриховки.




   


Цифры 1,     10    и     0.5 можно изменять чтобы получить различные изменения штриховок.
Можно запускать код и несколько раз, для выбора лучшего варианта. Вернуть предыдущий вариант это наверное откатами.   




На видах программы не работают.











Vitalij Lysanov


Расчет контурами видимости объекта














Программа вставляет в круг случайные окружности, рассчитывает и рисует контура.

Окружности удаляем, оставляем только контура.
Получается аналог видимости объектов.


Лучше если точка начала построения контура расположена возле края внешнего контура.

На рисунке также  показан вариант начала контура в середине случайной окружности.










import Kompas10API5 as KAPI
import Kompas10API7 as KAPI7
import pythoncom
from win32com.client import Dispatch
import LDefin2D
import LDefin3D
import ksConstants as CONST2D7
import ksConstants3D as CONST3D7
import MiscellaneousHelpers as MH

iKompasObject = Dispatch('KOMPAS.Application.5')
iKompasObject = KAPI.KompasObject(iKompasObject)
MH.iKompasObject = iKompasObject

iApplication = Dispatch('KOMPAS.Application.7')
iApplication = KAPI7.IApplication(iApplication)
MH.iApplication = iApplication

iDocument2D = iKompasObject.ActiveDocument2D()
iDocument = iApplication.ActiveDocument
iKompasDocument2D = KAPI7.IKompasDocument2D(iDocument)

import time
import random
import math


m=10
t=0.0

k1 = iDocument2D.ksCircle( 0, 0, m*100, 1 ) 

for x in range(222):
    x=m*200*(random.random()-0.5)
    y=m*200*(random.random()-0.5)
    r=m*10*random.random()+m*10
    ma= math.sqrt(x*x+y*y) +r


    c=m*(100-0.001)


    if ma<c:
   
     
        k2 = iDocument2D.ksCircle( x, y, r, 1 ) 
       
#        contur=iDocument2D.ksMakeEncloseContours(0, 0, -c )
        contur=iDocument2D.ksMakeEncloseContours(0, x, y )

        iDocument2D.ksStoreTmpGroup( contur )

   
        iDocument2D.ksDeleteObj(k2)







 

+ Благодарностей: 1

ТрындецЪ

Ничего не понял, но спасибо :)
Какое практическое применение для этого кода можно придумать?
+ Благодарностей: 2

Vitalij Lysanov

28.02.19, 11:14:51 #64 Последнее редактирование: 28.02.19, 14:10:30 от Vitalij Lysanov
Если конкретно. На форуме было несколько задач



И картинки приведены как пример что это возможно сделать в Компасе.


Контур это хорошая команда, в векторной форме вычисляет границы.  .
Получить контур без программирования за одно нажатие?


И к штриховкам на видах из программы нет доступа.
Все правильно, вид только для чтения, а к штриховкам на видах в ручном режиме дали доступ.

Важен сам алгоритм изменения или создания штриховок.
Этот алгоритм можно проверить на чертежах без видов.


___
PS

Есть еще и ассоциативная штриховка?  Может все уже есть, как всегда
https://forum.ascon.ru/index.php/topic,9360.msg50177.html?PHPSESSID=o9vgobvv2m29vpcglufhja4qdp#msg50177


__

PSPS

Есть ассоциация штриховки относительно контура


___

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

Изменили, все равно не управляется из программы.

Если разрушить вид, тогда программа изменяет шаг и угол штриховки

 
+ Благодарностей: 1

Slaviation

ЦитироватьКакое практическое применение для этого кода можно придумать?
Похожий алгоритм использовался в программе SHAFT при создании видов справа/слева вала.