Assgarth Opublikowano 5 Lutego 2013 Zgłoś Udostępnij Opublikowano 5 Lutego 2013 Witam, proszę o potwierdzenie błędu, czy braku możliwości edycji obiektu TABLE w ZwCAD2012+ (vernum = "2012.08.30(5622)"), z poziomu Visual Lispa. Przykładowy kod dodający nowy rekord w ZwCAD: Command: (cd:ACX_SetProp (car(entsel)) '(("Rows" . 4))) (("Rows" . #<%catch-all-apply-error%>)) AutoCAD: Command: (cd:ACX_SetProp (car(entsel)) '(("Rows" . 4))) (("Rows" . :vlax-true)) Funkcja biblioteczna: ; =========================================================================================== ; ; Zmienia cechy obiektu VLA / Sets the property of VLA-Object ; Obj [ENAME/VLA-Object] - entycja lub obiekt VLA / entity name or VLA-Object ; Lst [list] - lista cech par kropkowych / list of dotted pairs properties ; ------------------------------------------------------------------------------------------- ; ; (cd:ACX_SetProp (entlast) '(("LineType" . "BLA")("Color" . 1)("Layer" . "0"))) ; =========================================================================================== ; (defun cd:ACX_SetProp (Obj Lst) (if (= (type Obj) (quote ENAME)) (setq Obj (vlax-ename->vla-object Obj)) ) (if (vlax-write-enabled-p Obj) (mapcar (function (lambda (% / %1) (cons (car %) (if (vlax-property-available-p Obj (car %) T) (if (setq %1 (vl-catch-all-apply (quote vlax-put-property) (list Obj (car %) (if (vl-symbolp (cdr %)) (eval (cdr %)) (cdr %) ) ) ) ) %1 :vlax-true ) :vlax-null ) ) ) ) Lst ) ) ) Sprawdzając istnienie właściwości "Rows" dla obiektu TABLE, otrzymujemy odpowiedź pozytywną, więc powinno działać: Command: (vlax-property-available-p (vlax-ename->vla-object (car(entsel))) "Rows" nil) T Pozdrawiam, Assgarth Cytuj Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
kruszynski Opublikowano 6 Lutego 2013 Zgłoś Udostępnij Opublikowano 6 Lutego 2013 Witam Z ostatniego kontaktu z ZWSOFT, który pamiętam a dotyczył Tabel i dostępu przez LISP wynika, że nie było możliwości pracy na tabelach. Z pewnością było to jeszcze przed wydaniem wersji ZWCAD+. Postaram się ustalić jak sytuacja ma się na chwilę obecną i dlaczego nie działa Pana przykład. Może uda się ustalić jakieś rozwiązanie zastępcze np przez (entmod). Przy drugim rzucie oka na Pański kod myślę, że lepszym sposobem wstawiania wiersza do Tabeli będzie użycie metody InsertRows. Przykładowy kod, który u mnie zadziałał jest taki: (setq Tabela (vlax-ename->vla-object (car(entsel)) ) ) (vlax-invoke-method Tabela 'InsertRows 3 2.5 2) parametry metody są: Indeks wstawianego wiersza. (tutaj 3) Wysokość wiersza. (tutaj 2.5) Ilość wstawionych wierszy. (tutaj 2) Pozdrawiam Assgarth 1 Cytuj Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
Assgarth Opublikowano 11 Lutego 2013 Autor Zgłoś Udostępnij Opublikowano 11 Lutego 2013 Dziękuję za podpowiedź. Teraz inna sprawa - samo tworzenie obiektu TABLE za pomocą VLisp'a. (vla-Addtable (vla-get-ModelSpace (vla-get-ActiveDocument (vlax-get-acad-object) ) ) (vlax-3d-point '(0.0 0.0 0.0)) 4 3 20.0 100.0 ) ; error: Automation Error. Description was not provided. Nie rozumiem, dlaczego nie można utworzyć tego obiektu za pomocą Active-X. Poniżej za pomocą entmakex: (defun c:addTable (insPt numRows numColumns rowHeight columnWidth) (entmakex (append (list '(0 . "ACAD_TABLE") '(100 . "AcDbEntity") '(100 . "AcDbBlockReference") (cons 10 insPt) '(100 . "AcDbTable") (cons 91 numRows) (cons 92 numColumns) ) ((lambda (l) (repeat numRows (setq l (cons (cons 141 rowHeight) l))) ) nil ) ((lambda (l) (repeat numColumns (setq l (cons (cons 142 columnWidth) l))) ) nil ) ) ) ) np. (c:addTable (getpoint) 12 12 22 22) i wszystko działa. Rozumiem, że Active-X jeszcze nie jest dopracowany? pozdrawiam Cytuj Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
kruszynski Opublikowano 11 Lutego 2013 Zgłoś Udostępnij Opublikowano 11 Lutego 2013 Witam Sprawdziłem to i rzeczywiście tworzenie tabeli przez VLISP jeszcze w tej wersji nie jest obsługiwane. Tymczasowo pozostaje korzystać z entmakex. Ale mam też dobrą wiadomość: próbowałem utworzyć tabelę przez VLisp na najnowszej wersji ZWCADa i próba zakończyła się powodzeniem. Wersja, która pozwala na tworzenie tabel nie jest jeszcze oficjalnie dostępna. Pozdrawiam Cytuj Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
Assgarth Opublikowano 12 Lutego 2013 Autor Zgłoś Udostępnij Opublikowano 12 Lutego 2013 Witam, jeszcze jedna sprawa: jak utworzyć nowy styl dla Tabeli za pomocą VLispa? Command:(vl-catch-all-apply 'vla-AddObject (list (vla-Item (vla-get-Dictionaries (vla-get-ActiveDocument (vlax-get-acad-object))) "ACAD_TABLESTYLE") "MyStyle" "AcDbTableStyle")) #<%catch-all-apply-error%> a powinno być: Command: (vl-catch-all-apply 'vla-AddObject (list (vla-Item (vla-get-Dictionaries (vla-get-ActiveDocument (vlax-get-acad-object))) "ACAD_TABLESTYLE") "MyStyle" "AcDbTableStyle")) #<VLA-OBJECT IAcadTableStyle 0000000038ff21a8> pozdrawiam Cytuj Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
kruszynski Opublikowano 12 Lutego 2013 Zgłoś Udostępnij Opublikowano 12 Lutego 2013 ... a powinno być: Command: (vl-catch-all-apply 'vla-AddObject (list (vla-Item (vla-get-Dictionaries (vla-get-ActiveDocument (vlax-get-acad-object))) "ACAD_TABLESTYLE") "MyStyle" "AcDbTableStyle")) #<VLA-OBJECT IAcadTableStyle 0000000038ff21a8> Myślę, że raczej (vl-catch-all-apply 'vla-AddObject (list (vla-item (vla-get-Dictionaries (vla-get-ActiveDocument (vlax-get-acad-object))) "ACAD_TABLESTYLE") "MyStyle" "ZcDbTableStyle")) Ten sposób działa. prawdopodobnie tutaj jeszcze jest niezgodność Cytuj Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
Assgarth Opublikowano 12 Lutego 2013 Autor Zgłoś Udostępnij Opublikowano 12 Lutego 2013 U mnie nadal występuje błąd: Command: (vl-catch-all-apply 'vla-AddObject (list (vla-item (vla-get-Dictionaries (vla-get-ActiveDocument (vlax-get-acad-object))) "ACAD_TABLESTYLE") "MyStyle" "ZcDbTableStyle")) #<%catch-all-apply-error%> Obstawiam, że sprawdzane było na tej najnowszej wersji, bo na mojej vernum = "2012.08.30(5622)" (read only), nie działa. pozdrawiam Cytuj Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
kruszynski Opublikowano 12 Lutego 2013 Zgłoś Udostępnij Opublikowano 12 Lutego 2013 Może tak być. Ja to sprawdziłem na 2012.12.14(8707) i 2013.01.27(9513). Cytuj Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
Assgarth Opublikowano 27 Lutego 2013 Autor Zgłoś Udostępnij Opublikowano 27 Lutego 2013 Kiedy można spodziewać się wersji 2013.01.27(9513) do testów? Sprawdziłem działanie ACAD_TABLE pod wersją 2012.12.14(8707) i stabilność pracy pozostawia wiele do życzenia... Albo nie działa w ogóle, albo wywala całego ZwCADa w kosmos bez ostrzeżenia o błędach... wrrrr :???: Cytuj Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
kruszynski Opublikowano 27 Lutego 2013 Zgłoś Udostępnij Opublikowano 27 Lutego 2013 Witam Nie mamy wiążących deklaracji od ZWSOFT w sprawie terminu wydania nowej wersji. Przewidujemy, że może to być w marcu ale bez wiążących deklaracji. Kiedy wersja ta zostanie wydana, z pewnością zamieścimy taką informację na forum. Pozdrawiam Cytuj Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
Assgarth Opublikowano 17 Kwietnia 2013 Autor Zgłoś Udostępnij Opublikowano 17 Kwietnia 2013 Witam, sprawdziłem działanie ACAD_TABLESTYLE w najnowszej wersji ZwCAD2012+ SP2: (vl-catch-all-apply 'vla-AddObject (list (vla-item (vla-get-Dictionaries (vla-get-ActiveDocument (vlax-get-acad-object))) "ACAD_TABLESTYLE") "MyStyle" "ZcDbTableStyle")) i wygląda, że ta część działa prawidłowo. Pytanie zatem następujące: - jak nadać styl tekstom zawartym w tak utworzonym stylu tabeli? ; tName [sTR] - nazwa Stylu Nagłówka ; fTxtT [REAL] - wysokość tekstu nagłówka ; fTxtD [REAL] - wysokość tekstu danych ;; Set the text height for the Title, Header and Data rows (vla-SetTextHeight custObj acTitleRow fTxtT) (vla-SetTextHeight custObj (+ acDataRow acHeaderRow) fTxtD) ;; Set the text height and style for the Title row (vla-SetTextStyle custObj (+ acDataRow acHeaderRow acTitleRow) tName) Powyższe nie działa. Jak zatem dostać się do tych ustawień z poziomu VLISPa? Cytuj Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
kruszynski Opublikowano 18 Kwietnia 2013 Zgłoś Udostępnij Opublikowano 18 Kwietnia 2013 Witam A jak nie działa? Wyświetla się jakiś komunikat błędu? czy jakoś inaczej się to objawia? Pozdrawiam Cytuj Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
Assgarth Opublikowano 18 Kwietnia 2013 Autor Zgłoś Udostępnij Opublikowano 18 Kwietnia 2013 Pojawia się komunikat: błąd: Wystąpił wyjątek: 0xC0000005 (Naruszenie dostępu) pozdrawiam Cytuj Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
kruszynski Opublikowano 18 Kwietnia 2013 Zgłoś Udostępnij Opublikowano 18 Kwietnia 2013 Potwierdzam takie działanie programu, jest to powiązane z błędem, który kiedyś Pan zgłaszał. Nr nadany temu błędowi to T6727. Wówczas po użyciu funkcji nadającej szerokość tabeli i uruchomieniu funkcji stylu tabeli ZWCAD się wieszał. Teraz program jest stabilny, ale problem nie został jeszcze rozwiązany, rozwiązanie jest opracowywane. Na LISPowy dostęp do stylu tabel będziemy musieli jeszcze poczekać Cytuj Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
Rekomendowane odpowiedzi
Dołącz do dyskusji
Możesz dodać zawartość już teraz a zarejestrować się później. Jeśli posiadasz już konto, zaloguj się aby dodać zawartość za jego pomocą.