kruszynski

Moderatorzy
  • Postów

    1474
  • Dołączył

  • Ostatnia wizyta

  • Wygrane w rankingu

    93

Treść opublikowana przez kruszynski

  1. 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.
  2. 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.
  3. 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ą?
  4. 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.
  5. Atrybuty z bloku można odczytać tak: (setq Ref (vlax-ename->vla-object (car(entsel )))) (vlax-invoke-method Ref 'Getattributes ) Nie wiem 😉 tak. tak.
  6. Ż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.
  7. Tak. Jak możemy pomóc?
  8. 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.
  9. 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
  10. 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.
  11. Dzień dobry Czy może Pan przesłać fragment przykładowego pliku, na którym moglibyśmy to sprawdzić?
  12. Dzień dobry W ZWCAD takie rozwiązanie nie jest dostępne. Być może w przyszłości zostanie opublikowane.
  13. Link do wersji beta przesłałem w wiadomości prywatnej.
  14. 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.
  15. 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.
  16. Skrypt w załączniku. ExtraExplode.zelx
  17. Przygotuję takiego lispa. A tak przy okazji: w jakich sytuacjach taka operacja może się przydać?
  18. Zgłoszone.
  19. Można dodać obsługę zdarzenia na zamknięcie palety _ps.StateChanged += new PaletteSetStateEventHandler(OnPaletteClose); Tam zapisać położenie panelu static void OnPaletteClose(object sender, PaletteSetStateEventArgs e) { if (e.NewState == StateEventIndex.Hide) { ; tutaj zapisujemy położenie panelu w jakimś "pamiętniku" np zmiennej środowiskowe. } } A przy wczytywaniu sprawdzić co jest zapisane w "pamiętniku".
  20. Sztuczka polega na tym, żeby ustawić np _ps.Dock = DockSides.Left; ale dopiero PO _ps.Visible = true; Czyli np: _ps = new PaletteSet("Group Manager"); _ps.DockEnabled = (DockSides)((int)DockSides.Left + (int)DockSides.Right); _ps.Visible = true; _ps.Dock = DockSides.Left;
  21. Jest zakładka na wstążce.
  22. Nazbierało się tych tematów. Dziękuję. Kilka wygląda prosto, kilka wymaga konsultacji z ZWSOFT. Ale chciałbym dopytać: Proszę napisać coś więcej. Wyświetlanie ilości grup to prosta sprawa, ale po co lista rozwijalna? liczba porządkowa w dodatkowej kolumnie dla każdej grupy? też nic wielkiego, a do czego to może się przydać? Czy dobrze się domyślam, że chodzi o to, żeby w miejsca które zaznaczyłem czerwoną strzałką wstawić ikonkę wyświetlającą panel?
  23. Mam przykład, który tworzy PDFa z aktualnego rysunku. Może się przydać. Nie wykorzystuje Dsd, ale tworzy PDFa. TestPlot.rar
  24. Nie pracowałem wcześniej z DSD, więc nie umiem powiedzieć nic pewnego, ale chciałem dopytać w ZWSOFT o szczegóły. Przesłany kod, to tylko fragment większej całości. Zakładam, że mógłbym obudować ten fragment całością, którą dałoby się skompilować, i przetestować, ale mogłoby się okazać, że coś zrobiliśmy inaczej, co da różne wyniki. W związku z tym proszę o przesłanie szerszego fragmentu, pozwoli na wierne odtworzenie sytuacji.
  25. Proszę napisać coś więcej. Co się dzieje ? A co dziać się powinno, ale się nie dzieje?