Parikon

Użytkownik forum
  • Postów

    355
  • Dołączył

  • Ostatnia wizyta

  • Wygrane w rankingu

    19

Treść opublikowana przez Parikon

  1. Lista projektów będzie zapisywana w bazie danych. Wybrałem system bazodanowy Sqlite, którego biblioteki klas są w domenie publicznej. Visual Studio za pomocą usługi NuGet w "prosty" sposób dostarczy potrzebne biblioteki do naszego projektu.
  2. Aby obiekt UserControli1 w pełni wypełniał okno trzeba go powiększyć lub w zakresie definiowania klasy Window1 wpisać, że zawartość okna ma go wypełniać w całości. W klasie Window2 wysokość i szerokość okna będziemy podawać przy tworzeniu nowego okna. using System; using System.Collections.Generic; using System.Linq; using System.Text; using zzr = ZwSoft.ZwCAD.Runtime; using zza = ZwSoft.ZwCAD.ApplicationServices; using System.Windows; namespace projekt_forum // zmieniłem tytuł przestrzeni nazw { public partial class Window1 : Window { public Window1() { UserControl1 mojakontrolka = new UserControl1(); //this.Content = mojakontrolka; //this.Content = mojakontrolka; this.Title = "Lista projektów"; this.Width = 800; this.Height = 600; //this.MaxHeight = 240; //this.MinWidth = 250; this.MinHeight = 600; this.MinWidth = 800; this.AddChild(mojakontrolka); //dodany kod //zawartość okna wypełnia w całości to okno this.HorizontalContentAlignment = HorizontalAlignment.Stretch; this.VerticalContentAlignment = VerticalAlignment.Stretch; // koniec dodany kod this.WindowStartupLocation = WindowStartupLocation.CenterScreen; this.WindowStyle = WindowStyle.ThreeDBorderWindow; } } public partial class Window2 : Window { public Window2(int w, int h)// szerkość i wysokość zdefiniujemy przy tworzeniu okna { UserControl2 mojakontrolka = new UserControl2(); //this.Content = mojakontrolka; //this.Content = mojakontrolka; this.Title = "Lista projektów - formularz"; this.Width = w; this.Height = h; this.MinWidth = w; this.MinHeight = h; this.MaxWidth = w; this.MaxHeight = h; this.AddChild(mojakontrolka); //dodany kod //zawartość okna wypełnia w całości to okno this.HorizontalContentAlignment = HorizontalAlignment.Stretch; this.VerticalContentAlignment = VerticalAlignment.Stretch; //koniec dodany kod this.WindowStartupLocation = WindowStartupLocation.CenterScreen; this.WindowStyle = WindowStyle.ThreeDBorderWindow; } } public class Class1 { [zzr.CommandMethod("PROJEKT_FORUM")]//komenda jaką wywołamy program w ZwCAD public void ZwCAD2018okno()//aminiłem nazwe metody { Window1 win = new Window1(); zza.Application.ShowModalWindow(win);//wywoła okno nr 1 } } }
  3. Dziękuję! Po testach doszedłem do dwóch metod wstawienia wymiaru. Pierwsza wymiar.DimensionStyle = db.DimStyleTableId; gdy tak ustawiam parametr Dimensionstyle w AutoCAD wstawiane jest dimstyle w wersji nadpisanej. W ZwCAD też jest ten parametr, ale po wstawieniu nie można takich wymiarów skasować. Nawet zapis, napraw nie pomaga. Na ta chwilę poradziłem sobie poprzez ustawienie parametru wymiar.DimensionStyle = db.DimStyle; Zarówno w AutoCAD jak i w ZwCAD działa to tak samo. Aby wymiar przyjmował odpowiednie parametry muszę dodać obiekt ResultBuffer a potem wstawić go w obiekt wymiar. http://through-the-interface.typepad.com/through_the_interface/2009/09/creating-and-overriding-autocad-dimension-styles-using-net.html W ZwCAD skorzystałem z tej metody podmiany parametrów wymiaru. Jedyny szkopuł to taki, że ustawiłem na sztywno styl strzałki zbrojenie. A żeby go programowo przekazywać z modułu skala to musiałbym gdzieś zapisywać aktualnie wybrany styl. Nie jest to niewykonalne, a wręcz banalne. Jednakże DimstyleTableID prawidłowo działając załatwia sprawę, a tak muszę kombinować. Fajnie by było jakby to oprogramowali do końca albo wydali jakiś przewodnik jak użyć to w ZwCAD, żeby działało prawidłowo. Poniżej efekt weekendowej walki z problemem
  4. Tworząc programowo wymiary zzd.AlignedDimension wymiar = new zzd.AlignedDimension(); wymiar.SetDatabaseDefaults(); wymiar.XLine1Point = srodek; zzg.Point3d koniec = srodek - wyznacznik *(10 * Convert.ToDouble(tablica_danych[2 * i]) *dystans * vector_prostopadly3D_jedn * jednostki); wymiar.XLine2Point = koniec; wymiar.DimLinePoint = ptWymiary; wymiar.DimensionStyle = db.DimStyleTableId; ZwCAD tworzy wymiary w stylu podstawowym a nie nadpisanym dla porównania przy tym samym kodzie w AutoCAD 2010 styl jest po nadpisaniu Dobrze by było zgłosić to jako błąd(jeśli w 2014,15+ jest inaczej) lub jako oczekiwana przez użytkowników nowa funkcjonalność. Jakieś sugestie, co zrobić w kodzie aplikacji dla ZwCAD aby nie musieć dodatkowo używać komendy "WYMSTYL"?
  5. A ja się nauczyłem, że można na skróty. efekt najnowszej kompilacji.
  6. Utworzyłem bibliotekę klas o nazwie projekt_forum i skopiowałem całość kodu dodanego kilka postów wyżej. Projekt skompilował się bez problemu. Teraz dodam kilka kontrolek wewnątrz kontrolki Usercontrol1, która znów wypełnia obiekt window1.
  7. @dmatusz3 zrobił trzy rzeczy inaczej niż ja. Po pierwsze nazwę dla biblioteki class podał inną niż ja. Po drugie utworzył swoją bibliotekę pod wersją 4.6.1 Frameworku, a ja w wersji 4.0. Po trzecie skopiował całą zawartość kodu na raz using System; using System.Collections.Generic; using System.Linq; using System.Text; //tu wkleiłem pierwszą część namespace projekt_forum.dll { //tu wkleiłem część } I pokazał, że okno działa. VS tworzy przestrzeń nazw o nazwie zgodnej z nazwą biblioteki klas jaka zostanie utworzona w pliku dll. Ja tworząc bibliotekę klas nazwałem ją projekt_forum.dll co da wynikowo plik projekt_forum.dll.dll. Nie wygląda to ładnie. Proponuję zatem tworzyć sobie dowolną nazwę biblioteki nazw. Ważne aby nie kopiować jak @dmatusz3 w jednym ciągu a tylko tak jak pokazałem powyżej.
  8. Na końcu ostatniego filmu w sprawozdaniu z kompilacji VS wyświetla ścieżkę gdzie znajduje się plik aplikacji. Wystarczy go teraz wczytać poleceniem netload i sprawdzić czy uruchomi się nam okno nakładki
  9. Dzięki współpracy temat zawsze będzie miał obszerniejszą treść. Dokładnie tak jak pokazał @dmatusz3 wybieramy tylko Programowanie aplikacji klasycznych.... Mały komentarz do pierwszego filmu. Dodałem do odwołań projektu dwa niezbędne pliki, które znajdują się w katalogu ZwCAD-a. Następny film pokazuje czynności jakie trzeba dalej wykonać aby kontynuować tworzenie nakładki. Przy czym nie ma potrzeby za dużo klepać kodu skoro już go gdzieś mamy, więc ja otworzyłem wcześniejszy projekt gdzie już podobny kod przećwiczyłem i dodałem go do projektu "projekt_forum.dll". "Zarażeni" skopiują sobie kod, który opublikuje pod filmem. using System; using System.Collections.Generic; using System.Linq; using System.Text; using zzr = ZwSoft.ZwCAD.Runtime; using zza = ZwSoft.ZwCAD.ApplicationServices; using System.Windows; namespace projekt_forum.dll { public partial class Window1 : Window { public Window1() { UserControl1 mojakontrolka = new UserControl1(); //this.Content = mojakontrolka; //this.Content = mojakontrolka; this.Title = "Lista projektów"; this.Width = 800; this.Height = 600; //this.MaxHeight = 240; //this.MinWidth = 250; this.MinHeight = 600; this.MinWidth = 800; this.AddChild(mojakontrolka); this.WindowStartupLocation = WindowStartupLocation.CenterScreen; this.WindowStyle = WindowStyle.ThreeDBorderWindow; } } public partial class Window2 : Window { public Window2() { UserControl2 mojakontrolka = new UserControl2(); //this.Content = mojakontrolka; //this.Content = mojakontrolka; this.Title = "Lista projektów - formularz"; int w = 600; int h = 220; this.Width = w; this.Height = h; this.MinWidth = w; this.MinHeight = h; this.MaxWidth = w; this.MaxHeight = h; this.AddChild(mojakontrolka); this.WindowStartupLocation = WindowStartupLocation.CenterScreen; this.WindowStyle = WindowStyle.ThreeDBorderWindow; } } public class Class1 { [zzr.CommandMethod("PROJEKT_FORUM")]//komenda jaką wywołamy program w ZwCAD public void autocadokno() { Window1 win = new Window1(); zza.Application.ShowModalWindow(win);//wywoła okno nr 1 } } }
  10. Tutaj na przykładzie modułu PI efekt jaki chcę uzyskać. Powoli także zastanawiam się nad otwarciem kodu PI, ale to temat przyszłości.
  11. W tym temacie chciałbym od podstaw rozpocząć tworzenie nakładki zawartej w jednym pliku z rozszerzeniem dll. Tematem nakładki będzie lista projektów. Temat ten ma za zadanie zachęcić niektórych forumowiczów (tych którzy się "zarażą") do tworzenia aplikacji uruchamianych bezpośrednio z ZwCAD-a i nauki C#. Kod programu będzie w pełni dostępny w tym temacie na zasadzie bierz i używaj , a jak chcesz to dodaj coś od siebie. Sam osobiście nie czuję się ekspertem, ale tym co już potrafię postaram się dojść do ciekawego efektu. Co będzie potrzebne: Microsoft Visual Studio - polecam darmową wersję Community 2017, gdyż na nim będę pokazywał jak co zrobić. Zw-CAD w zasadzie każdy. Z zainstalowaniem MVS2017 ,każdy sobie poradzi. Ponieważ to kombajn to zalecam instalować tylko biblioteki netfamework, czyli podstawowy pakiet. Poniżej pierwsze kroki.
  12. Narysował ten obiekt liniami i potem komendą połącz zrobił z nich polyline. Twierdzi, że pole jest inne gdyby narysował obiekt od razu jako polyline.
  13. Wersja 1.23 Dostosowanie graficzne do ZwCAD 2018 Dodatkowo wszystkie moduły, których rysowane teksty nie były skojarzone z określonym stylem tekstu teraz mają już dedykowany swój styl "PI_TYTUL". Czcionka Arial.ttf Widthfactor 0.8. Każdy moduł, w którym użytkownik może wpisać dane po jego otwarciu, w polu tekstowych zaznacza wcześniejszy tekst i można go od razu zmieniać z klawiatury.
  14. PI v 1.22 ZwCAD 2018 Pro Moduły "Rysuj strzemię" oraz "Pręty żebrowane - przekroje" rysują średnice uwzględniającą istnienie żeber wg AT-15-6740/2011 Moduł "Pręty żebrowane-przekroje" oparty jest teraz na blokach. Każdy wstawiany blok reprezentujący wybrany przekrój pręta ma opisaną wewnątrz średnicę nominalną oraz okrąg reprezentujący minimalną średnice z uwzględnieniem wysokości żebra.
  15. Myślę że aktualny kod powinien wystarczyć. Zresztą zmiana kodu kosztowała by trochę czasu, który lepiej poświęcić na nowy moduł. Aby poprawić czytelność zapisu można sobie rozbić więcej spacji np 2 10 2 15 3 14 itp. Dodatkowo możemy wpisywać odległość w cm typu 7.5 czy 7,5 wiec przecinek i kropka jako separator odpadają. Gdy wpiszemy kropkę to moduł i tak zamieni ją na przecinek Natomiast odnosząc się do drugiej części nie do końca rozumiem o co chodzi. Strzemię jest wydane po obrysie zewnętrznym. Nie ma więc możliwości aby tak wydane strzemię nie dało się wykonać z tej długości pręta. Niezależnie od promienia gięcia, który jest promieniem wewnętrznym strzemię ma wysokość i szerokość podane w gabarytach zewnętrznych. Dodatkowo tam gdzie jest łuk mamy przy wydaniu odcinki proste co zapewnia, ze długość tych odcinków jest większa od długości łuku. Inaczej rzecz biorąc obwód okręgu wpisanego w kwadrat jest zawsze mniejszy od sumy boków tego kwadratu. 5. Promienie gięcia prętów (o ile nie podano na rysunku inaczej) wykonać zgodnie z PN EN 1992-1-1 Tablica 8.1N. 6. Wymiary strzemion i prętów giętych podano po krawędzi zewnętrznej.
  16. " Proszę o konkretne propozycje @Martin_S . Nie obiecuję, że zaraz nad tym się pochylę, ale w przyszłości czemu nie. Jest wersja PI 1.20. Dodałem nowy moduł "Szyk strzemion" oraz w module opisującym odcinki jest już kopiowanie długości linii lub polilinii do schowka. Szyk strzemion definiuje się poprzez ciąg znaków oddzielonych spacją lub spacjami. Zapis 1 5 4 10 oznacza "1odcinek 5 cm i 4 odcinki 10 cm". Moduł w czasie rzeczywistym zlicza łączną długość i łączną ilość strzemion.
  17. Wszystko można powoli ulepszać. Aktualnie chce ulepszyć opis odcinków. Zapomniałem o tym, aby nie tylko moduł podawał długość odcinka czy polylinii, ale także zapisywał ją do schowka systemowego.
  18. Nowy moduł z dziedziny budownictwa i architektury. Na filmie pokazałem także jak wykorzystać moduł pilnuj do hatchowania. Moduł pilnuj działa tylko z komendą hatch, ale nie z komendą bhatch. Dzięki temu można pod komendą hatch hatchować okresloną wartstwą, a pod komendą bjatch wartwą aktualną. W filmie będą to odpowiednio aliasy H i HB. Nowy moduł wspomagający rysowanie prętów zbrojeniowych w przekroju można wykorzystać nie tylko w budownictwie i architekturze ale do podziału dowolnego odcinka na równe części.