-
Postów
425 -
Dołączył
-
Ostatnia wizyta
-
Wygrane w rankingu
33
Treść opublikowana przez perlon
-
[C#] Klasa DrawJig i justowanie obiektów DBText
perlon opublikował(a) temat w Wsparcie programistyczne LISP i VisualLISP
Witam. Chciałbym zaprezentować przykładowy kod do wstawiania obiektów do rysunku z podglądem tego co zostanie wstawione. Rozwiązanie oparte o klasę JigDraw. Starałem się maksymalnie skrócić kod usuwając bloki try catch oraz wstawiając tylko jedną entycję. Z powodzeniem można go jednak przerobić zastępując Typ Entity typem IEnumerable<Entity> i wstawiać całe zespoły obiektów. Mam jednak pewną zagwostkę dla pary klas jak w temacie. Poniżej kod wstawiający obiekt klasy DBText z justifikacją LeftCenter uzyskaną za pomocą: tx1.VerticalMode = TextVerticalMode.TextVerticalMid; Najpierw efekt którego nie chcę: Kompletny kod który to realizuje: using ZwSoft.ZwCAD.DatabaseServices; using ZwSoft.ZwCAD.EditorInput; using ZwSoft.ZwCAD.Geometry; using ZwSoft.ZwCAD.GraphicsInterface; using ZwSoft.ZwCAD.ApplicationServices; using ZwSoft.ZwCAD.Runtime; namespace JigTest { public class Jig : DrawJig { private readonly Point3d basePoint; private readonly Entity entity; private Point3d currentPoint; private Matrix3d transformation; public Jig(Entity txt, Point3d point) : base() { entity = txt; basePoint = point; } public Entity GetEntity() { var result = entity.Clone() as DBText; result.TransformBy(transformation); return result; } protected override SamplerStatus Sampler(JigPrompts prompts) { JigPromptPointOptions jigOpt = new JigPromptPointOptions("Wskaż punkt wstawienia:") { UserInputControls = UserInputControls.Accept3dCoordinates, BasePoint = basePoint }; PromptPointResult res = prompts.AcquirePoint(jigOpt); currentPoint = res.Value; return SamplerStatus.OK; } protected override bool WorldDraw(WorldDraw draw) { transformation = Matrix3d.Displacement(basePoint.GetVectorTo(currentPoint)); var geometry = draw.Geometry; if (geometry != null) { geometry.PushModelTransform(transformation); geometry.Draw(entity); } return true; } } public class JigCommands { [CommandMethod("JIG")] public void Jig() { try { var tx1 = new DBText(); tx1.SetDatabaseDefaults(); tx1.TextStyle = Application.DocumentManager.MdiActiveDocument.Database.Textstyle; tx1.Height = 2; tx1.Position = new Point3d(0, 0, 0); tx1.TextString = "Tekst"; tx1.VerticalMode = TextVerticalMode.TextVerticalMid; var jig = new Jig(tx1, new Point3d(0, 0, 0)); Application.DocumentManager.MdiActiveDocument.Editor.Drag(jig); var ent = jig.GetEntity(); SaveToDatabase(ent); } catch(Exception ex) { Application.DocumentManager.MdiActiveDocument.Editor.WriteMessage(ex.Message); } } public static void SaveToDatabase(Entity ent) { Document doc = Application.DocumentManager.MdiActiveDocument; using (var tr = doc.TransactionManager.StartTransaction()) { var btr = tr.GetObject(doc.Database.CurrentSpaceId, OpenMode.ForWrite) as BlockTableRecord; btr.AppendEntity(ent); tr.AddNewlyCreatedDBObject(ent, true); tr.Commit(); } } } } Jak widać obiekt DBText przed wstawieniem do bazy rysunku ignoruje ustawienie TextVerticalMode. W trakcje wybory miejsca wstawienia ma osadzenie domyślne LeftBottom. Po zapisaniu encji do bazy rysunku dopasowanie jest respektowane i obiekt jest wyświetlany prawidłowo LeftCenter. Rozwiązaniem jest przed przekazaniem do klasy Jig obiektu uprzednio zapisanego do bazy a następnie usunięcie go z bazy przed wywołaniem metody Drag() [CommandMethod("JIG")] public void Jig() { try { var tx1 = new DBText(); tx1.SetDatabaseDefaults(); tx1.TextStyle = Application.DocumentManager.MdiActiveDocument.Database.Textstyle; tx1.Height = 2; tx1.Position = new Point3d(0, 0, 0); tx1.TextString = "Tekst"; tx1.VerticalMode = TextVerticalMode.TextVerticalMid; SaveToDatabase(tx1); var jig = new Jig(tx1, new Point3d(0, 0, 0)); EraseFromDatabase(tx1); Application.DocumentManager.MdiActiveDocument.Editor.Drag(jig); var ent = jig.GetEntity(); SaveToDatabase(ent); } catch(Exception ex) { Application.DocumentManager.MdiActiveDocument.Editor.WriteMessage(ex.Message); } } public static void EraseFromDatabase(Entity ent) { Document doc = Application.DocumentManager.MdiActiveDocument; using (var tr = doc.TransactionManager.StartTransaction()) { ent.ObjectId.GetObject(OpenMode.ForWrite).Erase(true); tr.Commit(); } } Efekt jest prawidłowy ale metoda wydaje się być nieco na około. Na koniec pytanie: Czy jest jakiś elegancji sposób aby metoda geometry.Draw(entity) wołana w metodzie WorlDraw klasy Jig respektowała właściwości obiekty typu DBText zanim ten obiekt zostanie utrwalony w bazie rysunku? -
[C#] Zdarzenie zmiana schematu kolorów interfejsu
perlon odpowiedział(a) na perlon temat w Wsparcie programistyczne LISP i VisualLISP
Faktycznie zmianą tego klucza można sterować jaki interfejs się załaduje przy starcie. Zmiana w trakcie działania nie przynosi efektu tzn. przy zamknięciu i tak do rejestru jest zapisywana ponownie wartość zgodna z chwilą zamknięcia. Tak więc tą metodą można sterować stylem gdy ZwCAD nie jest uruchomiony. Ale odczytać jak najbardziej można. Dzięki za podpowiedź. Natomiast otwartym pozostaje pytaniem o zdarzenie które jest uruchamiane w momencie zmiany w opcjach okna Options->Display->Color scheme. -
[C#] Zdarzenie zmiana schematu kolorów interfejsu
perlon odpowiedział(a) na perlon temat w Wsparcie programistyczne LISP i VisualLISP
No niestety. Chodzi mi o zmianę stylu interfejsu ciemny/jasny a nie zmianę koloru tła obszaru roboczego. Doprecyzuję cel. Chodzi o automatyzowanie dostosowania ładowanych pasków narzędzi do aktualnego stylu. Czy maja być ładowane ikony dostosowane do jasnego czy ciemnego tła. -
[C#] Zdarzenie zmiana schematu kolorów interfejsu
perlon opublikował(a) temat w Wsparcie programistyczne LISP i VisualLISP
Witam. Czy mógłby ktoś podpowiedzieć jakie zdarzenie należy zasubskrybować, żeby śledzić zmianę schematu kolorów Dark/Light? Czy jest może jakaś zmienna systemowa albo jakaś propertka którą można sprawdzić aktualny schemat kolorów ZwCAD'a, no i czy można taką zmianę sprowokować programowo? -
Kopiowanie/ wklejanie z trybem "ortho"
perlon odpowiedział(a) na hose2001 temat w ZWCAD Standard i Professional
- 4 odpowiedzi
-
- ortho
- kopiuj/wklej
-
(i 1 więcej)
Oznaczone tagami:
-
Można również bez filtra zaznaczyć wszystkie okręgi, zmienić im średnicę na oczekiwaną, a potem lisp'em do kasowania duplikatów usunąć nadmiarowe.
-
[AutoLISP] funkcja (getpropertyvalue ...)
perlon odpowiedział(a) na perlon temat w Wsparcie programistyczne LISP i VisualLISP
Kol. Kojacek prezentował kilka lispów dot. wymiarów. Między innymi https://kojacek.wordpress.com/2019/02/17/o-dimscale/comment-page-1/?unapproved=652&moderation-hash=f14d723e1826eb2f92424a6b02c589ef#comment-652 gdzie używa funkcji getpropertyvalue. Zresztą do odczytu różnych właściwości. Konkretnie chodziło o właściwość DimScale ze stylu wymiarowania odczytywana w taki sposób : (getpropertyvalue (tblobjname "DIMSTYLE" (cdr (assoc 3 (entget Ent)))) "DimScale" ) Próbowałem do zastosować w ZwCAD'zie. Zamieniłem tą linijkę na odczyt kodu DXF (cdr (assoc 40 (entget (tblobjname "DIMSTYLE" (cdr (assoc 3 (entget Ent))))))) Wydaje się jednak, że getpropertyvalue jest bardziej eleganckie i lepiej się to czyta. Ustawianie właściwości za pomocą setpropertyvalu jest również szybsze niż sklejanie kodów DXF w entmod'zie. Można też stosować (vlax-get-property ...) i (vlax-put-property ...) ale w tym konkretnym przypadku vlax-get-property nie zwracała w ogóle właściwości DimScale stylu wymiarowania. Na marginesie funkcja vlax-dump-object wywołana dla wymiaru zwraca taką listę: ; Property values: ; AltRoundDistance = 0.0 ; AltSuppressLeadingZeros = 0 ; AltSuppressTrailingZeros = 0 [...] ; DimLineInside = 0 ; DimTxtDirection = ; Document (RO) = #<VLA-OBJECT IZcadDocument 1cbd6b48> ; EntityName (RO) = "AcDbRotatedDimension" ; EntityTransparency = [...] ; TrueColor = #<VLA-OBJECT IZcadZcCmColor 1cbc86c0> ; UnitsFormat = 2 ; VerticalTextPosition = 1 ; Visible = -1 W szczególności właściwość DimTxtDirection jest na liście, ale nie da się jej odczytać funkcją vlax-get-property podobnie jak jeszcze kilka innych. Tak jakby była definicja ale nie było gettera i settera dostępowego. -
[AutoLISP] funkcja (getpropertyvalue ...)
perlon odpowiedział(a) na perlon temat w Wsparcie programistyczne LISP i VisualLISP
Potrzeba tej funkcji znów powróciła. Czy ZwSoft wypowiedział się w tej kwestii? -
Czcionka .ttf [rozwiązany]
perlon odpowiedział(a) na czarnula_100 temat w ZWCAD Standard i Professional
Fajnie, tylko co zobaczy na rysunku odbiorca twojego DWG'a, jeżeli masz w umowie przekazanie wersji edytowalnej? Dorzucasz TTF'a? -
LIcencja wieczysta czy naprawdę wieczysta?
perlon odpowiedział(a) na Parikon temat w ZWCAD Standard i Professional
Tu jest opisana procedura dla AC2010 i wyższych http://help.autodesk.com/view/INSTALL_LICENSE/2016/PLK/?guid=GUID-47C8BDE2-F44C-4F29-9CA3-9A3AD4424CF1 -
LIcencja wieczysta czy naprawdę wieczysta?
perlon odpowiedział(a) na Parikon temat w ZWCAD Standard i Professional
Też mi się kołacze po głowie taka procedura. Chodzi o to że jak się zabierało "żeton" z komputera to był on wgrywany na pendrajwa i było ustalone z góry na jakie konkretnie stanowisko ma być wgrana ta licencja. Prawdopodobnie na pendrajwa był uprzednio wczytywany request code nowego stanowiska i na ten request code była eksportowana licencja. Stąd to bieganie z USB między stanowiskami. Chyba nie ma możliwości wyeksportowania licencji tak w ciemno, a potem entliczek pentliczek na który komputer wypadnie na tego bęc. Myślałem że kol.Parikon przetestował ten backup windowsa, a to chyba była tylko pewna koncepcja 😞 Wracając do tematu wątku. Wygląda na to, że wieczystość zależy od licencjodawcy i może ulec ograniczeniu. Przy obecnym systemie softkey i bez aktywnej postawy ZwSOFT nie da się przenieść lub zabezpieczyć licencji software'wej . Innymi słowy dopóki licencjodawca będzie utrzymywał serwery licencji dopóty licencja jest wieczysta. Ale może się to zmienić. Autodesk od dawna wytyczał kierunki i kształtował trendy. Niestety nie wszystkie pomysły są godne naśladowania i oby inni producenci CAD nie czerpali z wzorca w tym zakresie. AC2010 jest out of support więc operacja jest ryzykowna. Bez potwierdzenia z Autodesku (sic! jak to uzyskać skoro 2010 jest już out of support) ja osobiście tak dla testów bym nie próbował. Wkurzająca jest ta nierównowaga sprzedawca<->klient 😠 -
LIcencja wieczysta czy naprawdę wieczysta?
perlon odpowiedział(a) na Parikon temat w ZWCAD Standard i Professional
Możesz potwierdzić, że AC i/lub ZC na softkeyach zadziałają na innej bazie sprzętowej z odtworzonego backupu całego systemu? Ja takiej operacji nie robiłem, a jestem ciekaw czy softkeye są generowanie wyłącznie na podstawie numeru windowsa i nie sprawdzają bazy sprzętowej. -
LIcencja wieczysta czy naprawdę wieczysta?
perlon odpowiedział(a) na Parikon temat w ZWCAD Standard i Professional
Proszę nie inputować. To nie mój pomysł ani realizacja. -
LIcencja wieczysta czy naprawdę wieczysta?
perlon odpowiedział(a) na Parikon temat w ZWCAD Standard i Professional
Nigdy takiej operacji nie testowałem. Czyżby to co opisałeś mogło służyć do replikowania posiadanych licencji softwerowych? Nie tak dawno zarekomendowałem w biurze całkowite ostateczne wycofanie się z assistance nielicznych już produktów autodeskowych. Obecna polityka cenowa Autodesku wg mnie jest nie do udźwignięcia przez nawet średnie biuro projektowe. -
LIcencja wieczysta czy naprawdę wieczysta?
perlon odpowiedział(a) na Parikon temat w ZWCAD Standard i Professional
No zgadza się. Dlatego pkt.3 z interpretacji cytowanej 4 posty wyżej mówi o nie powstawaniu dodatkowych obowiązków po stronie licencjodawcy. Takim obowiązkiem jest utrzymywanie serwerów licencji (specjalizowanej instalacji do przenoszenia fotelika z samochodu do samochodu). Jeżeli w wyniku udzielenia licencji, licencjodawca w celu realizacji umowy jest zobowiązany utrzymywać serwery licencji to taka licencja może zostać wypowiedziana z zachowaniem okresów wypowiedzenia. Oznacza to, że nie jest faktycznie wieczysta niewypowiadalna a jedynie bezterminowa z możliwością wypowiedzenia. Dlatego w biurze mamy wszystkie licencje ZwCAD'a zabezpieczone kluczem sprzętowym. Hmmm.... Nie sprawdzałem, czy aktywacja licencji działa w trybie off-line 😕 To i tak dobrze że nie każą odinstalowywać tych starych autocadów a jedynie napisali że wyłączają serwery licencji. Należało by tu przytoczyć przykład nakładek branżowych z dołożonym interpreterem LISP'a pozwalającym uruchomić je na AutoCAD LT (LT-extender). Po zadymie sądowej z TM-CAD Engineering użytkownicy takich nakładek mieli do wyboru albo przesiąść się na pełną wersję AC albo zrezygnować z nakładki choć na samą nakładkę mieli ważną licencję. Autodesk kupił producenta extendera i automatycznie wypowiedział wszystkie licencje z nakazem odinstalowania extendera - znaczy się zabrał isofixy z fotelika 😞 Co ci po foteliku jak nie można go przymocować. Gdyby ktoś miał fotelik w samochodzie na podstawie licencji na użytkowanie, to po wypowiedzeniu licencji należałoby zaprzestać korzystania z tego fotelika po upływie wypowiedzenia. -
LIcencja wieczysta czy naprawdę wieczysta?
perlon odpowiedział(a) na Parikon temat w ZWCAD Standard i Professional
Historia nie jest gwarancją przyszłości. -
LIcencja wieczysta czy naprawdę wieczysta?
perlon odpowiedział(a) na Parikon temat w ZWCAD Standard i Professional
Druga interpretacja przemawia do mnie bardziej, ponieważ spełnienie tych trzech warunków powoduje, że zakup licencji nosi cechy transakcji kupna-sprzedaży, która z natury jest nieodwołalna (oczywiście z nielicznymi wyjątkami będącymi przedmiotem analizy sądowej) i nie wymaga dodatkowych klauzul. -
LIcencja wieczysta czy naprawdę wieczysta?
perlon odpowiedział(a) na Parikon temat w ZWCAD Standard i Professional
Źródło : Czy istnieje licencja wieczysta na korzystanie z utworu? Oczywiście jest to interpretacja. Niestety ani w licencji Autodesk'u ani ZwSOFT'u klauzuli niewypowiadalnosci nie ma 😞 I jeszcze jeden link Niewypowiadalna licencja na czas nieokreślony -
Udane testy szybkości ZWCAD 2020
perlon odpowiedział(a) na Martin_S temat w ZWCAD Standard i Professional
Masz może do porównania wyniki na starszym silniku? -
LIcencja wieczysta czy naprawdę wieczysta?
perlon odpowiedział(a) na Parikon temat w ZWCAD Standard i Professional
Niestety chyba należy wieczystość rozumieć tak, że zainstalowany i aktywowany program może działać w nieskończoność. W tym sensie umowa nie jest ograniczona w czasie. Natomiast licencja nie mówiła nic o wieczystości działania serwerów do aktywacji licencji. Wyłączenie serwerów licencji nie ogranicza działania aktywnych stanowisk. Tak czy siak Autodesk wykorzystuje tą metodę na sukcesywne rugowanie starych wersji z obiegu. Nie da się zagwarantować, że w przyszłości firmy opierające licencjonowanie na softkey'ach nie pójdą w ślady Autodesku. W tym kontekście licencja oparta o klucz sprzętowy jest "bardziej wieczysta" niż "wieczysty" softkey 😉 -
Udane testy szybkości ZWCAD 2020
perlon odpowiedział(a) na Martin_S temat w ZWCAD Standard i Professional
No dobra, ale jak szybki. Gdzieś jest jakieś zestawionko? -
Wykonywanie poleceń podczas orbity SHIFT+kółko myszy [Wprowadzono w ZWCAD 2020]
perlon odpowiedział(a) na adba94 pytanie w Propozycje nowych funkcji
Było to już sygnalizowane. Przydała by się opcja izolowania zaznaczonych obiektów przy wywołaniu obrotu za pomocą SHIFT+SKM. Jak się wywoła 3dOrbit z ikony to obiekty są izolowane. Przyspiesza to nieco działanie te funkcji. Przy SHIFT+SKM niestety przy obracaniu są widoczne wszystkie obiekty i przy dużej ich ilości trochę może się mulić. -
Witam. Kiedy kody aktywacyjne do wersji 2020 będą możliwe do pobrania z https://licencja.zwcad.pl
-
Mam wrażenie, że położenie okna Command jest zapisywane jeżeli wyjście z programu jest z zapisem pliku. Jeżeli odrzuci się zapis pliku aktualna pozycja tego okna nie jest zapamiętywana.
-
Mam te wszystkie opcje zaznaczone. Jak otwieram plik bezpośrednio to komunikat się pojawia i w 2019 i w 2020. Jak otwieram plik z podpiętą referencją to w 2019 ta operacja przebiega normalnie czyli jest komunikat, wciskam Yes/No i idzie dalej. W 2020 komunikatu nie ma tylko zwcad zamarza. Jak do czystego pliku podpinam referencję to obie wersie zamarzają nie pokazując żadnego komunikatu. Tylko systemowy że aplikacja ZwCAD przestała odpowiadać.