Size: a a a

2016 May 05

SK

Sergey Khaylov in rupython
ага, в челябинске (стальные) 😉
источник

KM

Khasan Mamaev in rupython
или Череповце
источник

KM

Khasan Mamaev in rupython
ну я реально, а то вижу тут стальной Питон не в почете
источник

PZ

Pavel Zagrebelin in rupython
Khasan Mamaev
ну я реально, а то вижу тут стальной Питон не в почете
Очень редкая связка, .net  и python.
источник

SK

Sergey Khaylov in rupython
ааа, я не понял 😊 Iron... Думал опечатка (Остальные) 😊 Сорри
источник

PZ

Pavel Zagrebelin in rupython
Khasan Mamaev
я не могу подгрузить одну сборку, есть код на СиШарпе, я не могу перевести его в Питон
А можно посмотреть на с# код?
источник

KM

Khasan Mamaev in rupython
ну как редкая связка, если есть есть отдельная среда программирования, которая вполне себе развивается
источник

KM

Khasan Mamaev in rupython
using System;
using Microsoft.Win32;

namespace TFlexControlSample
{
 class APILoader : IDisposable
 {
   private string _cadPath = null;
   private bool _initialized = false;

   //прописываем путь к CADу
   public APILoader()
   {
     _cadPath = GetPath("T-FLEX CAD 3D 14", "Rus");
     AppDomain.CurrentDomain.AssemblyResolve += new ResolveEventHandler(AssemblyResolve);
   }

   public bool InitializeTFlexCADAPI()
   {
     if (_initialized)
       return true;
     if (string.IsNullOrEmpty(_cadPath))
       throw new System.IO.FileNotFoundException("T-FLEX CAD is not installed");

     //Перед работой с API T-FLEX CAD его необходимо инициализировать
     //В зависимости от параметров инициализации, будут или не будут
     //доступны функции изменения документов и сохранение документов в файл.
     //За это отвечает параметр setup.ReadOnly.
     //Если setup.ReadOnly = false, то для работы программы требуется
     //лицензия на сам T-FLEX CAD
     TFlex.ApplicationSessionSetup setup = new TFlex.ApplicationSessionSetup();
     setup.ReadOnly = false;

     _initialized = TFlex.Application.InitSession(setup);

     return _initialized;
   }

   public void Dispose()
   {
     if (_initialized)
     {
       TFlex.Application.ExitSession();
       _initialized = false;
     }
   }

   private static string GetPath(string productName, string language)
   {
     if (string.IsNullOrEmpty(productName) || string.IsNullOrEmpty(language))
       return null;

     string fullProductName = UIntPtr.Size == 8 ? productName + " x64" : productName;
     string regPath = string.Format(@"SOFTWARE\Top Systems\{0}\{1}", fullProductName, language);

     using (RegistryKey key = Registry.LocalMachine.OpenSubKey(regPath,
                                                               RegistryKeyPermissionCheck.ReadSubTree,
                                                               System.Security.AccessControl.RegistryRights.ReadKey))
     {
       if (key == null)
         return null;
     
       string path = (string)key.GetValue("ProgramFolder", string.Empty);
       if (string.IsNullOrEmpty(path))
       {
         path = (string)key.GetValue("SetupHelpPath", string.Empty);
         if (string.IsNullOrEmpty(path))
           return null;
       }
     
       if (!path.EndsWith("\\"))
         path += "\\";
     
       return path;
     }
   }

   private System.Reflection.Assembly AssemblyResolve(object sender, ResolveEventArgs args)
   {
     if (string.IsNullOrEmpty(_cadPath))
       return null;

     try
     {
       string name = args.Name;

       int index = name.IndexOf(",");
       if (index > 0)
         name = name.Substring(0, index);

       string fileName = string.Format("{0}{1}.dll", _cadPath, name);

       if (!System.IO.File.Exists(fileName))
         return null;

       System.IO.Directory.SetCurrentDirectory(_cadPath);

       return System.Reflection.Assembly.LoadFile(fileName);
     }
     catch (Exception ex)
     {
       System.Windows.Forms.MessageBox.Show(string.Format("Ошибка загрузки сборки {0}:\n{1}", args.Name, ex.Message),
                                            "Ошибка",
                                            System.Windows.Forms.MessageBoxButtons.OK,
                                            System.Windows.Forms.MessageBoxIcon.Error);
       return null;
     }
   }
 }
}
источник

KM

Khasan Mamaev in rupython
а АйронПайтон крайне удобная вещь, на фоне СиШарп обладает очень полезным преимуществом, а именно простотой синтаксиса
источник

KM

Khasan Mamaev in rupython
новички быстро втягиваются в программирование
источник

u

ultra noise in rupython
а уже можно писать полноценные десктоп приложения?
источник

KM

Khasan Mamaev in rupython
к кому вопрос?
источник

u

ultra noise in rupython
к тому кт пишет на ирон пайтоне)
источник

KM

Khasan Mamaev in rupython
можно в VS написать код на Питоне и скомпилировать в exe
источник

KM

Khasan Mamaev in rupython
но я этим не занимаюсь, у меня есть в программе Dynamo консоль для Питона
источник

u

ultra noise in rupython
А это не ты ли уроки по связке Динамо-Питон делаешь?)
источник

KM

Khasan Mamaev in rupython
я
источник

u

ultra noise in rupython
это круто — делать материал по нишевым инструментам
источник

u

ultra noise in rupython
часто трудно найти что-то подобное
источник

KM

Khasan Mamaev in rupython
да, разрыв между проектировщиками и программистами огромный, и спрос большой, уже самые скудные навыки программирования дают инженерам огромный выигрыш во времени, мое коллеги частенько бывают в культурном шоке, когда я за минуты решаю задачи, на которые без программировани я уходят дни
источник