-
Postów
1457 -
Dołączył
-
Ostatnia wizyta
-
Wygrane w rankingu
87
Treść opublikowana przez kruszynski
-
Szyk manualny
kruszynski odpowiedział(a) na wedzik temat w Wsparcie programistyczne LISP i VisualLISP
Wygląda trochę jak jedna z funkcji naszego ZWGEO: https://youtu.be/E0pC28T7E-M Wiecej tutaj https://www.zwcad.pl/ui-szansa/zwgeo.html -
Szyk manualny
kruszynski odpowiedział(a) na wedzik temat w Wsparcie programistyczne LISP i VisualLISP
A tak z ciekawości: W jakich sytuacjach taka funkcja może się przydać? -
Viewport na modelu
kruszynski odpowiedział(a) na Noodles temat w Wsparcie programistyczne LISP i VisualLISP
Myślałem że uda mi się znaleźć jakiś problem na poziomie kodu, ale wygląda OK. Mogę to przetestować jedynie na ZWCAD i tutaj działa. Nie wiem dlaczego w innej aplikacji jest problem. -
[VBA] Pręt zbrojeniowy
kruszynski odpowiedział(a) na pop3k temat w Wsparcie programistyczne LISP i VisualLISP
A na drugi, to ten kod z tablicami dla mnie był bardziej czytelny niż z kolekcjami. Refaktoryzacja w celu usunięcia kodu spagetti przez wydzielenie funkcji to dobry plan. Ale zmiana typy danych z tablicy na kolekcję, to po żeby za chwilę zmieniać kolekcję na tablicę to ma skutek dokładnie odwrotny. Myślę, że lepszym planem byłoby oddzielenie operacji typu interakcja z użytkownikiem, przeliczenie punktów rysowanie. np tak Public Function ZapytajOPunkt(komunikat As String) ZapytajOPunkt = ThisDrawing.Utility.GetPoint(, komunikat) End Function Public Function przeliczPunkty(NAROZNIK As Variant) ReDim p(7) As Double p(0) = NAROZNIK(0): p(1) = NAROZNIK(1) p(2) = NAROZNIK(0) + 50: p(3) = NAROZNIK(1) + 30 p(4) = NAROZNIK(0) + 100: p(5) = NAROZNIK(1) + 30 p(6) = NAROZNIK(0) + 100: p(7) = NAROZNIK(1) przeliczPunkty = p End Function Public Function rysuj(p) Dim poly As ZcadLWPolyline Set poly = ThisDrawing.ModelSpace.AddLightWeightPolyline(p) poly.ConstantWidth = 1 End Function Private Sub Test() ' frm_test.Hide Dim NAROZNIK As Variant NAROZNIK = ZapytajOPunkt("Podaj punkt początkowy:") Dim p() As Double p = przeliczPunkty(NAROZNIK) rysuj (p) End Sub Dzięki temu pracujesz szybciej, bo jesteś niezależny od okna możesz w innej funkcji testującej wywołać np tylko rysuj(p) na danych sztucznie spreparowanych dzięki czemu masz pewność że ten obszar DZIAŁA. masz wszystkie operacje związane z reprezentacją grafiki w jednym miejscu. więc jeśli chcesz w innym miejscu aplikacji narysować podobną polilinię, to nie musisz pamiętać że masz jeszcze zmienić jej szerokość. Jeśli chcesz zmienić polilinię, np na szerszą, albo podmienić na inny typ elementu np blok, robisz to tylko w jednym miejscu, w funkcji rysuj, a nie musisz szukać w innych miejscach aplikacji gdzie to jeszcze i po pozmieniać. -
[VBA] Pręt zbrojeniowy
kruszynski odpowiedział(a) na pop3k temat w Wsparcie programistyczne LISP i VisualLISP
tak na pierwszy rzut oka to raczej ZcadLWPolyline a nie ZcadPolyline -
Viewport na modelu
kruszynski odpowiedział(a) na Noodles temat w Wsparcie programistyczne LISP i VisualLISP
Trudno powiedzieć co może być przyczyną problemu. Załączony fragment jest częścią większej całości - korzysta z funkcji które nie są funkcjami z obszaru AutoLISP czy VisualLISP. -
ZWMetric:Locals:Get : *error*: incorrect type - nil
kruszynski odpowiedział(a) na czarnula_100 temat w ZWMetric
Dzień dobry. W jakich sytuacjach to się objawia? Sprawdzałem przed chwilą na najnowszej wersji i na pustym pliku i taki problem się nie powtórzył. Być może coś siedzi w pliku na którym Pani pracuje. Proszę przesłać przykładowy plik na pomoc@zwcad.pl Pozdrawiam -
Wstawianie bloków wg zadanych współrzędnych
kruszynski odpowiedział(a) na xposdi temat w Wsparcie programistyczne LISP i VisualLISP
Jasne, mogę pomóc. Jaka pomoc byłaby potrzebna? Sporo przykładów i wyjaśnienie najprostszych pojęć jest tutaj. https://www.zwcad.pl/1-narzedzia-do-lisp.html https://www.zwcad.pl/1-narzedzia-do-lisp/39-kursy/kurs-lisp/przyklady-lisp/111-2-odczyt-pliku-tekstowego.html https://www.zwcad.pl/help/lisp-help.html -
[VBA] Szkic w UserForm
kruszynski odpowiedział(a) na pop3k temat w Wsparcie programistyczne LISP i VisualLISP
Czy to koniecznie musi być w VBA? Wygląda na to, że to nie jest możliwe w VBA. Jedyne co mi przychodzi do głowy to wstawić do UserForm kontrolkę typu Image i wyświetlić Obrazek prostokąta w kontrolce Image, ale to taka dość karkołomna metoda. Może lepiej zrobić to w .Net VB, tam przypuszczam że będzie to łatwiejsze. -
LISP AutoCAD - etykiety wysokości
kruszynski odpowiedział(a) na paq95 temat w Wsparcie programistyczne LISP i VisualLISP
Może tak: (defun c:lh (/ p x y ptcoord textloc) (while (setq p (getpoint "\nPick Point: ")) (command "_POINT" p) (setq z (rtos (caddr p))) (setq ptcoord (strcat z)) (setq textloc (getpoint "\nPick Label Location: ")) (command "_TEXT" (list (car textloc) (cadr textloc) (caddr p) ) 0.3 0 ptcoord "" ) ) ) -
[Vlisp] Lisp do tworzenia Viewportów - błąd w nowszych wersjach
kruszynski odpowiedział(a) na swazy temat w Wsparcie programistyczne LISP i VisualLISP
Rozwiązanie zostanie opracowane w którejś z kolejnych wersji. Nie mam deklaracji kiedy. Obecnie najnowsza wersja to 2021 Beta wiec może w wersji 2021 się uda. We wcześniejszych wersjach np 2020 zmiana nie zostanie wprowadzona. Zastanawiam się nad jakimś alternatywnym rozwiązaniem, ale nic nie przychodzi mi do głowy. -
[Vlisp] Lisp do tworzenia Viewportów - błąd w nowszych wersjach
kruszynski odpowiedział(a) na swazy temat w Wsparcie programistyczne LISP i VisualLISP
Dzień dobry Sprawdziłem, potwierdzam, przekazałem do ZWSOFT. Niestety nie przychodzi mi do głowy żadne rozwiązanie, napiszę jeśli coś wymyślę, albo dowiem się w ZWSOFT. Pozdrawiam. -
Ciekawy przypadek. Myślę, że najłatwiejszym sposobem byłoby przygotowanie LISPa który to zrobi. Zastanawia mnie jak powstała taka sytuacja. Czy tak wstawia jakaś nakładka? czy inne microstation? W załączonym przykładzie widać, że tylko jeden atrybut został przesunięty. Dlaczego? Jak taki LISP miałby rozpoznawać które atrybuty przenosimy, a które zostają?
-
Automatyczna numeracja
kruszynski odpowiedział(a) na Harry temat w Wsparcie programistyczne LISP i VisualLISP
W zasadzie tak, kierując wiadomości na adres pomoc@zwcad.pl Choć wolałbym tutaj, bo przez przypadek może się to przydać też innym użytkownikom forum. -
Automatyczna numeracja
kruszynski odpowiedział(a) na Harry temat w Wsparcie programistyczne LISP i VisualLISP
Atrybuty z bloku można odczytać tak: (setq Ref (vlax-ename->vla-object (car(entsel )))) (vlax-invoke-method Ref 'Getattributes ) Nie wiem 😉 tak. tak. -
Automatyczna numeracja
kruszynski odpowiedział(a) na Harry temat w Wsparcie programistyczne LISP i VisualLISP
Żeby ruszyć proponuję zapoznanie się z naszym kursem: https://www.zwcad.pl/1-narzedzia-do-lisp.html Jest tam też kilka przykładów. Wtedy na pewno pojawią się konkretne pytania na które chętnie odpowiem. Może ja, a może ktoś inny z naszego forum. -
Automatyczna numeracja
kruszynski odpowiedział(a) na Harry temat w Wsparcie programistyczne LISP i VisualLISP
Tak. Jak możemy pomóc? -
[C#] Komunikacja z aplikacją Zwcad
kruszynski odpowiedział(a) na pop3k temat w Wsparcie programistyczne LISP i VisualLISP
Testowałem na Visual Studio 2010. Miałem dostepne ZWCAD 2020 Type Library w pliku C:\Program Files\Common Files\ZWSoft Shared\ZWCAD18.tlb i ZWCAD Type Library w plik C:\Program Files\Common Files\ZWSoft Shared\ZWCAD17.tlb Ale przeszedłem na zakładkę Browse, wybrałem plik c:\Program Files\ZWSOFT\ZWCAD 2020\ZWCAD.exe Przestrzeń ZWCAD stała się dostępna. using ZWCAD; Plik C:\Program Files\Common Files\ZWSoft Shared\ZWCAD18.tlb Nie jest częścią SDK. Na innym komputerze gdzie nie mam SDK ten plik jest dostępny, więc pewnie w Pana przypadku wystarczy wskazać plik nie z listy tylko wybierając z dysku. -
[VBA] Utwórz i odczytaj XDATA
kruszynski odpowiedział(a) na pop3k temat w Wsparcie programistyczne LISP i VisualLISP
Przykład zapisu i odczytu XDaty może być taki: Public Sub ZapisXDaty() Dim linia As ZcadEntity Dim XType(0 To 9) As Integer Dim XData(0 To 9) As Variant Dim reals3(0 To 2) As Double Dim worldPos(0 To 2) As Double XType(0) = 1001: XData(0) = "TestowaAplikacja" XType(1) = 1000: XData(1) = "przykładowy tekst" XType(2) = 1003: XData(2) = "0" XType(3) = 1040: XData(3) = 1.23479137438413E+40 XType(4) = 1041: XData(4) = 1237324938 XType(5) = 1070: XData(5) = 32767 XType(6) = 1071: XData(6) = 32767 XType(7) = 1042: XData(7) = 10 reals3(0) = -100.23: reals3(1) = 100.23: reals3(2) = -20 XType(8) = 1010: XData(8) = reals3 worldPos(0) = 200.23: worldPos(1) = 200.23: worldPos(2) = -10 XType(9) = 1011: XData(9) = worldPos Set linia = Sel("Wybierz element") linia.SetXData XType, XData End Sub Public Sub OdczytXDaty() Dim selected As ZcadEntity Dim xdataOut As Variant Dim xtypeOut As Variant Set selected = Sel("Wybierz element") selected.GetXData "", xtypeOut, xdataOut For Each v In xdataOut If VarType(v) >= 8192 Then ThisDrawing.Utility.Prompt v(0) ThisDrawing.Utility.Prompt v(1) ThisDrawing.Utility.Prompt v(2) Else ThisDrawing.Utility.Prompt v End If Next End Sub Public Function Sel(ByVal txt As String) As Object Dim obj As ZcadEntity Dim px As Variant On Error Resume Next ThisDrawing.Utility.GetEntity obj, px, txt On Error GoTo 0 Set Sel = obj End Function -
[C#] Komunikacja z aplikacją Zwcad
kruszynski odpowiedział(a) na pop3k temat w Wsparcie programistyczne LISP i VisualLISP
Tak na szybko, to jeśli bez netload, to chyba pozostaje COM, ale czy przez C# można korzystać z COM? nigdy tego nie robiłem, ale myślę, że tak powinno być to możliwe. -
attext Błąd eksportu bloków do pliku CSV funkcją ATTEXT w ZWCAD 2020
kruszynski odpowiedział(a) na Marek-M temat w ZWCAD Standard i Professional
Dzień dobry Czy może Pan przesłać fragment przykładowego pliku, na którym moglibyśmy to sprawdzić? -
ZWCAD zrx .NET dostępność plików .pdb
kruszynski odpowiedział(a) na K.R temat w ZWCAD Standard i Professional
Dzień dobry W ZWCAD takie rozwiązanie nie jest dostępne. Być może w przyszłości zostanie opublikowane. -
Dokumentacja hydrologiczna i geologiczna
kruszynski odpowiedział(a) na dmatusz3 temat w ZWCAD Standard i Professional
Link do wersji beta przesłałem w wiadomości prywatnej.- 2 odpowiedzi
-
- zwdrill
- dokumentacja geotechniczna
-
(i 1 więcej)
Oznaczone tagami:
-
[C#] Niezgodność wersji PL i EN
kruszynski odpowiedział(a) na perlon temat w Wsparcie programistyczne LISP i VisualLISP
Proszę napisać coś więcej w temacie jak się tym posługiwać. Odblokowałem pliki dll zgodnie z powyższym filmikiem, wcześniej wywalało mi że load failed. Teraz kiedy ładuję plik CADKitBasicZwCAD przez polecenie NETLOAD Wyświetala mi: Ładowanie CADKitBasicZwCAD... Ładowanie CADKitElevationMarksZwCAD... I co dalej? jest OK bo nie ma wspomnianego przez Pana komunikatu błędu? czy nie jest OK bo nie widzę panela widocznego na Pana screenie? Wczytuję też CADKitZwCAD.dll i Autofac.dll nic się nie dzieje, nie wyświetla ani błąd, ani potwierdzenie że coś jest OK. -
[C#] Klasa DrawJig i justowanie obiektów DBText
kruszynski odpowiedział(a) na perlon temat w Wsparcie programistyczne LISP i VisualLISP
Wygląda na to, że nie trzeba dodawać, usuwać i przesuwać. Wystarczy dodać do bazy, otworzyć do zapisu i będzie OK. Twój kod przerobiłbym tak: 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; public Matrix3d transformation; public Jig(Entity txt, Point3d point) : base() { entity = txt; basePoint = point; } 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; SaveToDatabase(tx1); Document doc = Application.DocumentManager.MdiActiveDocument; using (var tr = doc.TransactionManager.StartTransaction()) { var txt = tr.GetObject(tx1.Id, OpenMode.ForWrite) as DBText; var jig = new Jig(txt, new Point3d(0, 0, 0)); Application.DocumentManager.MdiActiveDocument.Editor.Drag(jig); txt.TransformBy(jig.transformation); tr.Commit(); } } 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(); } } } } Choć zaznaczam, że wcale nie czuję się tu jakoś bardzo kompetentny.