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

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

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

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

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

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

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

Обучение программированию

Автор Alal, 26.03.16, 09:13:20

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

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

Alal

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

Алхимик

На пайтоне вроде ничего нет, есть книжка:
"Разработка приложений под КОМПАС в Delphi"

+ есть SDK если у вас есть опыт работы с Python, то может и этой справки хватить.

ну а так можно или задавать конкретный вопрос на форуме или посмотреть какие макаросы пишут тут самоучки-инженеры. Там нет С++ и Delphi. Только VBA и Python.
+ Благодарностей: 1

Alal

Спасибо. Еще подскажите, где-нибудь встречаются примеры макросов с подробными комментариями кода? Или описание библиотек, которые используются в питоне. К примеру, я вижу функцию iDocument2D.ksLineSeg в одном из примеров, как мне узнать, что она делает?
Заранее извиняюсь, если эти вопросы кажутся глупыми, но пока знаний никаких... 

Запустить справку SDK, вести ksLineSeg и почитать.

Николай

Алхимик, по ссылке "тут" ничего нет...

Алхимик

Там ссылка на группу в ВК и тему по созданию пару макросов. Но там особо серьезных туторов нет.
+ Благодарностей: 1

Alal

Алхимик, спасибо большое за отправную точку. Делай побольше видео с описанием кода, буду следить за тобой на ютубе.

СВ

Цитата: Alal от 26.03.16, 09:13:20
... Я не программист, но ручками рисовать целый день то, что можно автоматизировать, уже надоело. ...
Если можно, расскажите, кто Вы по сути:
- конструктор, который способен программировать;
- программист, которому приходится конструировать?
В какой области Вы работаете; часто ли встречаются в работе повторяющиеся детали, элементы?

Алхимик

Цитата: СВ от 28.03.16, 13:37:23
- конструктор, который способен программировать;
- программист, которому приходится конструировать?
В какой области Вы работаете; часто ли встречаются в работе повторяющиеся детали, элементы?
Что вам даст ответы на эти вопросы?

ПС  судя по тому что пишется в теме и по названию, это не программист.
ПС2 программирование может помочь во многом, вот там по ссылке в ВК, люди буквально за неделю смогли написать норм макрос. Который будет пересчитывать гибы, макрос на создания текста в таблице (за вечер).

Вот нужно человеку два дня потратить на заполнение таблиц, а он за 5 часов написал макрос с нуля и заполнил таблицу за 1 минуту. А если маленькая контора и сроки горят, тогда и начальник еще наградит.

СВ

 Сергей Павлович, я очень рад, что помог пристроить этот "элемент производственного юмора", но вопрос всё-таки не снимается.

n00ze

Цитата: СВ от 28.03.16, 14:59:54
Сергей Павлович, я очень рад, что помог пристроить этот "элемент производственного юмора", но вопрос всё-таки не снимается.
я тоже не очень понимаю зачем вопрос. с помощью правильного макроса можно многое автоматизировать.. Почти все если быть точным) Один мой друг - хороший программист говорит - я вот иногда мечтаю, стать офисным работником. Написать кучу программ и ничего не делать в  целыми днями. И я готов с ним согласиться, что это возможно.

СВ

 Сергей Павлович, n00ze,  ВСЁ-ТАКИ, я могу спросить у Alalа что мне нужно, или нет?

Alal

СВ, конечно можете спросить! :)
Я инженер-проектировщик, занимаюсь в основном проектированием наружных инженерных коммуникаций. Специальность ПГС. На программиста не учился и программированием не занимался.
Организация у нас маленькая, работа разнообразная, поэтому специализированного программного обеспечения нет. При проектировании сетей возникает куча работы, которую на мой взгляд можно и нужно автоматизировать. К примеру, сеть водоснабжения поселка длиной 10 км может состоять из >500 отдельных участков. На каждом участке должны быть указаны его длина и обозначение трубы. Работа может выполняться за секунду, но занимает часа три. И таких примеров много. Из-за этого проектирование превращается в конвейер с кучей маленьких элементов чертежа.
При необходимости, сделать маленькую программку, для меня никогда не было проблемой. Но научить, что-то делать компас для меня оказалось проблемой. Сходу не осилил, поэтому пришел сюда за помощью.

Slaviation

Alal, предлагаю такой roadmap

1.
Нужно установить Python и его расширение Pywin32
для x86
https://www.python.org/ftp/python/2.7.9/python-2.7.9.msi
http://sourceforge.net/projects/pywin32/files/pywin32/Build%20219/pywin32-219.win32-py2.7.exe/download
для x64
https://www.python.org/ftp/python/2.7.9/python-2.7.9.amd64.msi
http://sourceforge.net/projects/pywin32/files/pywin32/Build%20219/pywin32-219.win-amd64-py2.7.exe/download

2. Почитать об основах программирования на Python. Если совсем нет времени на это, то иметь под рукой
удобный cheat sheet, к примеру http://www.cheatography.com/davechild/cheat-sheets/python/pdf/

3. В качестве исходного примера можно использовать файл из вложения start_step.pyw, в котором реализовано полуение
интерфейсов к обеим версиям api КОМПАС и к используемым константам КОМПАС.
i_kompas_api_object - Базовый объект КОМПАС API IKompasAPIObject (api версии 7)
kompas_object - KompasObject - Интерфейс API КОМПАС (api версии 5)
Использовать можно любую версию api или обе сразу. Каждая версия покрыает свою часть функционала
КОМПАС (так наверное сложилось исторически:)

4. Пользуясь справкой по SDK КОМПАС (SDK.chm) начать пробовать получать дочерние от IKompasAPIObject или KompasObject интерфейсы,
использовать их свойства и методы, продвигаться к решению поставленной задачи.

5. Заглядывать в обучающие примеры в каталогах
C:\Program Files\ASCON\KOMPAS-3D V16\SDK\C++\VisualcAUTO\
или в
C:\Program Files\ASCON\KOMPAS-3D V16\SDK\Pascal\DELPHIAUTO\
хоть они и не на Python.
+ Благодарностей: 6

Alal

Подскажите, если я в активном 2D документе выделяю несколько отрезков и хочу узнать координаты их начальных и конечных точек, как мне это сделать? В SDK смотрел, но не могу найти нужные мне методы, как я их вижу.
Если не сложно, желательно показать на примере в питоне или на край в паскале, синтаксис С, бейсика и тд совсем не понимаю

PS Еще раз говорю, ничем таким не занимался, поэтому все для меня туго для понимания. Не глумитесь  :)

Alal

Такие методы как ksLineSegParam и GetParamStruct я нашел, но как работать именно с выделенными объектами?

Алхимик

Самому интересно, тут наверное ответят более конкретно.

В группе ВК был макрос от одного программиста АСКОН, который разукрашивал выбранные грани, можно там посмотреть как происходил выбор. Посмотреть сейчас не могу ВК, но помнится где то в начале темы про макросы.

Alal

30.03.16, 09:42:36 #17 Последнее редактирование: 30.03.16, 11:32:28 от Alal
Точно! помню такое, ничего тогда не понял, просто пролистал. Надо пересмотреть.

Сегодня пришел на работу, написал одну строчку, и до сих пор сижу довольный:
+ Благодарностей: 1

pr0100

Обучение, обучением, а вот исходников закоментированных мало выкладывается

Alal

Вот тот макрос с выделение, есть у кого подобное с 2D объектами?


#!/usr/bin/python
# -*- coding: cp1251 -*-
# |change color

import Kompas10API5 as KAPI
from win32com.client import Dispatch
import LDefin2D
import LDefin3D

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

SlcMan = iDocument2D.GetSelectionMng()
Count = SlcMan.GetCount()
n=0
Face0 = SlcMan.GetObjectByIndex (0)
ColorFace0 = Face0.ColorParam()
color0 = ColorFace0.color
for n in range(0,Count,1):
   Face = SlcMan.GetObjectByIndex (n)
   ColorFace = Face.ColorParam()
   color = ColorFace.color
   ColorFace.color = color0
   Face.Update ()
SlcMan.UnselectAll ()