Parikon

Użytkownik forum
  • Content Count

    305
  • Joined

  • Last visited

  • Days Won

    18

Parikon last won the day on December 2 2018

Parikon had the most liked content!

About Parikon

  • Rank
    Średniozaawansowany

Recent Profile Visitors

The recent visitors block is disabled and is not being shown to other users.

  1. Parikon

    Przybornik PARIKON

    Opublikowałem wersję PI 2019.8. Ta wersja jest udostępniona bez żadnych ograniczeń i można jej używać w zakresie niekomercyjnym za darmo. Jeśli użytkownik nie tworzy za pomocą PI prac na sprzedaż użytkownik programu nie ma wobec mnie żadnych zobowiązań.
  2. Parikon

    ZWCAD 2020

    Nowa wersja ZwCAD pójdzie na kluczu wersji 2019?
  3. Parikon

    Przybornik PARIKON

    Miło mi poinformować, że na Strona domowa PI udostępniłem program WaGaCAD PI 2019.6 w wersji testowej do użytku niekomercyjnego. Z ograniczeniem czasowym do 31 lipca 2019 i własną licencją. Chętnym zapraszam do przetestowania.
  4. W c# mogłoby być tak: /// <summary> /// Zamraża wszystkie warstwy oprócz aktywnej /// </summary> public static void Frezealllate() { try { // Get the current document and database zza.Document acDoc = zza.Application.DocumentManager.MdiActiveDocument; zzd.Database db = acDoc.Database; // Start a transaction using (zzd.Transaction acTrans = db.TransactionManager.StartTransaction()) { // Open the Layer table for read zzd.LayerTable TablicaWarstw; TablicaWarstw = acTrans.GetObject(db.LayerTableId, zzd.OpenMode.ForRead) as zzd.LayerTable; foreach (zzd.ObjectId warstwa in TablicaWarstw) { zzd.LayerTableRecord acLyrTblRec; acLyrTblRec = acTrans.GetObject(warstwa, zzd.OpenMode.ForWrite) as zzd.LayerTableRecord; if (warstwa != db.Clayer) { acLyrTblRec.IsFrozen = true; } } // Save the changes and dispose of the transaction acTrans.Commit(); } } catch (System.Exception ex) { zza.Application.DocumentManager.MdiActiveDocument.Editor.WriteMessage(ex.ToString()); } }
  5. Parikon

    Dostosuj interfejs użytkownika.

    Tutaj można pobrać pusty "częściowy plik ustawień" (ang. partial cuix) i wypełnić w oknie "Dostosuj interfejs użytkownika". Wcześniej zalecam zmienić nazwę.
  6. Parikon

    Dostosuj interfejs użytkownika.

    Zapewne tak. Proponuję jednak robić to poprzez częściowe pliki ustawień. Nie wiem jak wygenerować taki częściowy plik ustawień. Być może ktoś na tym forum pomoże. Ale jak już mamy taki częściowy plik ustawień, to możemy zrobić toolbary, wstążki i menu, niezależne od głównego cuix-a. Niestety nie mam aktualnie wersji 2017.ale powinno być podobnie jak na filmiku poniżej.
  7. Parikon

    C# Hatch

    Dzięki. Jest pole we właściwościach.
  8. Parikon

    C# Hatch

    Mam taki problem. Skompilował dll-kę z tego kodu https://knowledge.autodesk.com/search-result/caas/CloudHelp/cloudhelp/2016/ENU/AutoCAD-NET/files/GUID-01A47A4F-9FC5-4DB6-8C3E-B72D75688965-htm.html Po załadowaniu komendą addhatch Zwcad tworzy okrąg ale pusty. VERNUM = "2018.07.26(35476)_x64". Gdy rozciągnę okrąg wypełnia się hatch-em. Gdy zaznaczę hatch i sprawdzę jego właściwości, pod hasłem geometria jest tylko właściwość wzniesienie - brak właściwości pole. Kopiuje sam okrąg i hatch robię pod Zwcad. Tutaj we właściwościach hatcha mamy podane pole. Jak usprawnić kod, aby: - kreskowanie wyświetlało się od razu, a nie po zmianie geometrii okręgu - możliwy był odczyt pola kreskowania W kodzie użyłem kreskowania solid.
  9. Parikon

    Przybornik PARIKON

    Hosting WPF content inside an AutoCAD palette
  10. Parikon

    Przybornik PARIKON

    Moduł można dalej dopieszczać. Jednakże najważniejsze jest to, aby rysował ramki. Wstawiłem resztę kodu, który narysuje ramki.
  11. Parikon

    Przybornik PARIKON

    Racja. private string[] kolumny = { "Format","Wysokość","Długość","G-marg","D-marg","L-marg","P-marg"}; public void ZmienDaneWTabeli() { this.db_con.Open(); SQLiteCommand db_cmd = db_con.CreateCommand(); db_cmd.CommandType = CommandType.Text; db_cmd.CommandText = "update " + nazwatabeli + " set " + "[" + kolumny[0] + "]='" + UserControl2.nazwaformatki + "'," + "[" + kolumny[1] + "]='" + UserControl2.wysokosc + "'," + "[" + kolumny[2] + "]='" + UserControl2.dlugosc + "'," + "[" + kolumny[3] + "]='" + UserControl2.G_marg + "'," + "[" + kolumny[4] + "]='" + UserControl2.D_marg + "'," + "[" + kolumny[5] + "]='" + UserControl2.L_marg + "'," + "[" + kolumny[6] + "]='" + UserControl2.P_marg + "' " + "where [" + kolumny[0] + "]='" + UserControl1.formatka + "'"; db_cmd.ExecuteNonQuery(); db_con.Close(); } Pozostawiłem nawiasy kwadratowe z racji tego, że są bardziej elastyczne. Mogę zrobić tak, że: kolumny[0] = "Formatka arkusza" i już by się program wysypał, gdyby nie nawiasy.
  12. Parikon

    Przybornik PARIKON

    Myślę, że nie ma co paranoidalnie podchodzić do naszej bazy, gdyż użytkownik prędzej wykasuje bazę z katalogu bazy niż zastosuje odpowiednią nazwę formatki aby kwerenda zadziałała inaczej. Ale dzięki za artykuły, zawsze warto wiedzieć więcej niż mniej. Jeśli chodzi o metodę PobierzDane... to napisałem ją tak, abym mógł ją wykorzystywać w przyszłości odpytując różne tabelę. A jak tak tę metodę napisałem, to muszę podać nazwę tabeli. A ponieważ nie chciało mi się kopiować nazwy, to ją upubliczniłem i wybrałem jako już gotową do wyboru. Nie zastosowałem count() bo nie wiedziałem jak sprawdzić to zapytanie. Zrobiłem więc tak jak potrafię, czyli inaczej niż ty być zrobił. Teraz podałeś jak byś postąpił dalej, więc zaraz wypróbuje. Trzeba inaczej zadać zapytanie, gdyż podane nie działa tak jak chcielibyśmy. Działa dopiero gdy tak sformułuje zapytanie. db_cmd.CommandText = "select * from " + nazwa_tabeli + " order by [Format] desc";
  13. Parikon

    Przybornik PARIKON

    Masz rację, powinno być o wiele szybciej. Zmieniłem metodę. public bool CzyPowtorka(string nazwa) { bool bull = false; this.db_con.Open(); SQLiteCommand db_cmd = db_con.CreateCommand(); db_cmd.CommandType = CommandType.Text; db_cmd.CommandText = "select * from " + nazwatabeli + " where [Format] = '" + nazwa + "'"; db_cmd.ExecuteNonQuery(); var dt = new DataTable(); SQLiteDataAdapter da = new SQLiteDataAdapter(db_cmd); da.Fill(dt); db_con.Close(); int wierszy = dt.Rows.Count; if (wierszy > 0) bull = true; return bull; } Czy istnieje w SQL taka komenda, która wstawi rekord po rekordzie, który wskażemy, a nie na końcu tabeli? Przykładowo, chcemy dodać nową formatkę A1+. Wybieramy z DataGrid wiersz i odczytujemy jego dane. Następnie wstawiamy do bazy rekord jako następny po tym zaznaczonym. Po mojemu byłoby to tak 😉 "insert po from nazwatabeli where [Format] = wybrananazwa"
  14. Parikon

    Przybornik PARIKON

    Niestety ja nic tu nie pomogę. Natomiast wracając do ramek - do klasy Base dodałem taką metodę: public bool CzyPowtorka(string nazwa, int numerkolumny) { bool buul = false; DataTable dt = PobierzDaneTabeli(nazwatabeli); int wierszy = dt.Rows.Count; DataRow dtr; string pobor; int wynik = 0; if (wierszy > 0) { for (int i = 0; i < wierszy; i++) { dtr = dt.Rows[i]; pobor = dtr[numerkolumny].ToString(); if (pobor == nazwa) wynik = wynik+1; } } if (wynik != 0) buul = true; return buul; } Z poziomu ZwCAD-a, dodanie dwóch rekordów o tej samej nazwie formatki powinno być niemożliwe.
  15. Parikon

    Przybornik PARIKON

    Wszystkie uwagi uważam za słuszne. Jeśli chodzi o powtarzające się nazwy formatki, to w tej akurat dll-ce chciałbym zastosować metodę, która porówna nową nazwę z nazwami już występującymi i nie zezwoli nam jej dodać, zarówno gdy będziemy korzystać z przycisku dodaj lub zmień. Dodanie nowej kolumny z ID pozostawmy, gdy będziemy chcieli zrobić nową wersję tabeli. No chyba, że znajdziemy sposób, aby wykorzystać id, które i tak musi tworzyć SQLite i zapewne w DataTable też jest zapisane. Problem tylko jak się do niego dobrać. Debugowanie: Stworzyłem folder PI 2019 MIT EDITION i w nim mam aktualnie taki jak powyżej układ. Następne zmodyfikowałem lispa startowego. Dodałem go do autostartu w ZwCAD oraz wskazałem w ZwCAD nową ścieżkę do folderów przeszukiwania. ; LISP: pi_start.lsp ; Lisp startowy projektu Przybornik Inżyniera MIT EDITION ; Autor: WaGaCAD; ; Wydanie 201812 ; Opis działania: Ustawia środowisko pracy Przybornik Inżyniera MIT EDITION. (defun znajdzplik (nazwapliku / file_name) (setq file_name nazwapliku) (setq plik (findfile file_name)) (if plik (progn (setq file_name plik) (command "netload" plik )) (progn ;else (princ (strcat "\nNie znaleziono pliku " file_name "."))))) (znajdzplik "start_zw.dll") Dzięki temu tylko podmieniać ramki_zw.dll po każdej kompilacji w tym folderze i uruchamiam ZwCAD, sprawdzając jak program się zachowuje, po wprowadzonych zmianach. Eksplorator windows ma ciekawą funkcję szybki dostęp w drzewie folderów, gdzie można sobie dodać folder, w którym VS tworzy naszą dll-kę oraz folder z plikami, gdzie będzie się rozwijało PI MIT EDITION.