QUẢNG CÁO ĐẦU TRANG

Collapse

Thông báo

Collapse
No announcement yet.

Dxf và Dimension trong AutoCAD

Collapse
X
 
  • Lọc
  • Giờ
  • Show
Clear All
new posts

  • Dxf và Dimension trong AutoCAD

    Các bác ơi làm cách nào điều khiển được Dimension bằng Lisp ví dụ như scale đường kích thước chẳng hạn

  • #2
    Ðề: Dxf và Dimension trong AutoCAD

    Tại sao dung biến hệ thống thì lại bị "STYLE OVERRIDE" vậy, làm cách nào cho nó hết.

    ((-1 . <Entity name: 7ef7bd38>) (0 . "DIMSTYLE") (105 . "27") (102 .
    "{ACAD_REACTORS") (330 . <Entity name: 7ef7f218>) (330 . <Entity name:
    7ef7f430>) (330 . <Entity name: 7ef7f4b0>) (330 . <Entity name: 7ef7f538>) (330
    . <Entity name: 7ef7f5e8>) (330 . <Entity name: 7ef7f658>) (330 . <Entity name:
    7ef7fa30>) (330 . <Entity name: 7ef7fb98>) (102 . "}") (330 . <Entity name:
    7ef7bc50>) (100 . "AcDbSymbolTableRecord") (100 . "AcDbDimStyleTableRecord") (2
    . "Standard") (70 . 0) (40 . 5.0) (41 . 2.0) (42 . 1.0) (43 . 1.0) (44 . 1.0)
    (73 . 0) (74 . 0) (77 . 1) (140 . 2.0) (141 . -2.0) (147 . 1.0) (176 . 256)
    (177 . 256) (178 . 2) (271 . 0) (272 . 0) (277 . 6) (340 . <Entity name:
    7ef7bf40>) (342 . <Entity name: 7ef7bf10>) (371 . -1) (372 . -1))

    trong danh sách trên (40. 5.0) là để thiết lập dimscale của kích thước, nhưng sao không sửa được

    (defun C:SK()
    (setq SL (tblsearch "dimstyle" "standard"))
    (setq new '(40 . 10.0))
    (setq old '(40 . 5.0))
    (setq SL1 (subst new old SL))
    (entmod SL1)
    (entupd (tblobjname "dimstyle" "standard"))
    )

    em viết thử đoạn mã như trên thay được giá trị nhưng không entmod và entupd được, bác dậy chỉ cho em với

    Ghi chú


    • #3
      Ðề: Dxf và Dimension trong AutoCAD

      Cám ơn ông bác nha, để em thử xem nhé, thế còn tại sao khi dung biến hệ thống thì lại bị "style override" vậy

      Ghi chú


      • #4
        Ðề: Dxf và Dimension trong AutoCAD

        Chào bác em làm được rồi cám ơn bác nha, nhưng bác nên viết lại như thế này thì không bị "style override"
        (progn
        (setq SL(tblobjname "DIMSTYLE" "standard")
        new 10
        SL1(entget SL)
        old(assoc 40 SL1)
        new(cons 40 new)
        SL1(subst new old SL1))
        (entmod SL1)
        (entupd SL)
        (command "-DimStyle" "R" "standard")
        )
        được không bác, nhưng khi Dimscale=1 thì đoạn mã này không chạy được, bác dịnh giải quyết thế nào, Em định như sau:

        (setq L1 (entget(tblobjname "dimstyle" "standard")))
        ((-1 . <Entity name: 7ef7bd38>) (0 . "DIMSTYLE") (105 . "27") (102 .
        "{ACAD_REACTORS") (330 . <Entity name: 7ef7f218>) (330 . <Entity name:
        7ef7f430>) (330 . <Entity name: 7ef7f4b0>) (330 . <Entity name: 7ef7f538>) (330
        . <Entity name: 7ef7f5e8>) (330 . <Entity name: 7ef7f658>) (102 . "}") (330 .
        <Entity name: 7ef7bc50>) (100 . "AcDbSymbolTableRecord") (100 .
        "AcDbDimStyleTableRecord") (2 . "Standard") (70 . 0) (41 . 1.0) (42 . 1.0) (43
        . 1.0) (44 . 1.0) (73 . 0) (74 . 0) (77 . 1) (140 . 2.0) (141 . -2.0) (147 .
        1.0) (176 . 256) (177 . 256) (178 . 2) (271 . 0) (272 . 0) (277 . 6) (340 .
        <Entity name: 7ef7bf40>) (342 . <Entity name: 7ef7bf10>) (371 . -1) (372 . -1))

        (setq L2 (tblsearch "dimstyle" "standard"))
        ((0 . "DIMSTYLE") (2 . "Standard") (70 . 0) (3 . "") (4 . "") (5 . "Dot") (6 .
        "") (7 . "") (40 . 1.0) (41 . 1.0) (42 . 1.0) (43 . 1.0) (44 . 1.0) (45 . 0.0)
        (46 . 0.0) (47 . 0.0) (48 . 0.0) (140 . 2.0) (141 . -2.0) (142 . 0.0) (143 .
        25.4) (144 . 1.0) (145 . 0.0) (146 . 1.0) (147 . 1.0) (71 . 0) (72 . 0) (73 .
        0) (74 . 0) (75 . 0) (76 . 0) (77 . 1) (78 . 0) (170 . 0) (171 . 2) (172 . 0)
        (173 . 0) (174 . 0) (175 . 0) (176 . 256) (177 . 256) (178 . 2) (270 . 8) (271
        . 0) (272 . 0) (273 . 2) (274 . 2) (340 . <Entity name: 7ef7bf40>) (275 . 0)
        (280 . 0) (281 . 0) (282 . 0) (283 . 1) (284 . 0) (285 . 0) (286 . 0) (287 . 3)
        (288 . 0))
        sau đó bỏ phần gạch chân đi, rồi nối 2 list lại với nhau, nhưng em thử mãi không dùng được hàm member vơi L1 nó toàn báo nill thôi, thế là bị làm sao

        Ghi chú


        • #5
          Ðề: Dxf và Dimension trong AutoCAD

          (defun C:KT()
          (setq KEYWORD '(2 . "Standard"))
          (setq LISTSEARCH (tblsearch "dimstyle" "standard"))
          (setq LISTSEARCH (member KEYWORD LISTSEARCH))

          (setq LISTOBJNAME (entget(tblobjname "dimstyle" "standard")))
          (setq LISTOBINAME1 (reverse LISTOBJNAME))
          (setq LISTOBJNAME (member KEYWORD LISTOBINAME1))
          (setq LISTOBJNAME1 (cdr LISTOBJNAME))

          (setq N (length LISTOBJNAME1))
          (setq LISTDIM LISTSEARCH)
          (setq N1 0)
          (while (<= N1 (- N 1))
          (setq L1 (nth N1 LISTOBJNAME1))
          (setq LISTDIM (cons L1 LISTDIM))
          (setq N1 (1+ N1))
          )
          (setq LISTDIMENSION LISTDIM)

          (setq DIMNAME(tblobjname "DIMSTYLE" "standard")
          new 3
          old(assoc 40 LISTDIMENSION)
          new(cons 40 new)
          LISTDIMENSION (subst new old LISTDIMENSION))
          (entmod LISTDIMENSION)
          (entupd DIMNAME)
          (command "-DimStyle" "R" "standard")
          )

          Bác kiểm tra hộ em nó chạy thế nào cái nha, có vẻ được đấy nhưng không biết nó còn có lỗi gì không

          Ghi chú


          • #6
            Ðề: Dxf và Dimension trong AutoCAD

            (defun C:TRUCSO()
            (setq TEXTHEIGH 2.1)
            (setq DRAWINGSCALE (getreal "\nDrawing Scale(1/N): "))
            (setq RADIUS (* (/ 1 DRAWINGSCALE) TEXTHEIGH))
            (setq SO 1)
            (while
            (setq PT (getpoint "\nInsert Point or Enter Exit: "))
            (progn
            (setq HS (cal "1/3"))
            (setq X (nth 0 PT)
            Y (nth 1 PT)
            Z (nth 2 PT)
            )
            (setq PT1
            (list X (- Y (* HS 2 RADIUS)) Z)
            )
            (setq PTC
            (list X (- Y (+ (* HS 2 RADIUS)) RADIUS) Z)
            )
            (setq LISTBLOCK (list '(0 . "BLOCK")
            '(2 . "TRUC")
            '(70 . 66)
            (cons 10 PT)
            )
            )
            (setq LISTLINE (list '(0 . "LINE") (cons 10 PT1) (cons 11 PT)))
            (setq LISTCIRCLE '((0 . "CIRCLE") (10 0 0 0) (40 . 0.5)))
            (setq
            OLD (assoc 40 LISTCIRCLE)
            NEW (cons 40 RADIUS)
            LISTCIRCLE (subst NEW OLD LISTCIRCLE)
            OLD (assoc 10 LISTCIRCLE)
            NEW (cons 10 PTC)
            LISTCIRCLE (subst NEW OLD LISTCIRCLE)
            )
            (setq LISTTEXT
            '((0 . "TEXT")
            (100 . "AcDbEntity")
            (67 . 0)
            (410 . "Model")
            (8 . "GhiChu")
            (100 . "AcDbText")
            (10 4178.87 4320.61 0.0)
            (40 . 63.0)
            (1 . "A")
            (50 . 0.0)
            (41 . 0.7)
            (51 . 0.0)
            (7 . "RomanS")
            (71 . 0)
            (72 . 1)
            (11 4502.27 4352.11 0.0)
            (210 0.0 0.0 1.0)
            (73 . 2)
            )
            )
            (setq OLD (assoc 40 LISTTEXT)
            NEW (cons 40 RADIUS)
            LISTTEXT (subst NEW OLD LISTTEXT)
            )
            (setq OLD (assoc 11 LISTTEXT)
            NEW (cons 11 PTC)
            LISTTEXT (subst NEW OLD LISTTEXT)
            )
            (setq OLD (assoc 1 LISTTEXT)
            NEW (cons 1 (rtos SO 2 0))
            LISTTEXT (subst NEW OLD LISTTEXT)
            )

            (entmake LISTBLOCK)
            (entmake LISTLINE)
            (entmake LISTCIRCLE)
            (entmake LISTTEXT)
            (entmake '((0 . "ENDBLK")))
            (setq LISTINSERT
            (list '(0 . "INSERT") '(2 . "TRUC") (cons 10 PT))
            )
            (entmake LISTINSERT)
            (princ)
            (setq SO (1+ SO))
            )
            )
            )


            Bác Lam ơi, đoạn mã để tạo ra trục số viết thế được chưa vậy, em muốn hỏi bác có làm cách nào để thay đoạn mã

            (setq OLD (assoc 11 LISTTEXT)
            NEW (cons 11 PTC)
            LISTTEXT (subst NEW OLD LISTTEXT)


            bằng hàm

            (defun MODIFYLIST(LST CODE CODEVALUE)
            (setq OLD(assoc CODE LST)
            NEW(cons CODE CODEVALUE)
            LST (subst NEW OLD LST))


            không,
            ví dụ như hàm MODIFYLIST trên thì biến LST, CODE, CODEVALUE là biến tổng thể phải không, em vẫn còn lơ mơ mấy cái kiểu biến này quá, mà hình như LISP không có kiểu hàm giá trị nhỉ như FUNCTION trong VB vậy mà toàn kiểu SUB thôi đúng không
            Có thể dùng thủ tục của file LISP này dùng cho file LISP khàch không
            Em có ý thế này mình sẽ lưu các LIST của một số đối tượng CAD lúc cần thì lôi ra và sửa mấy cái mã cần thôi được không bác
            Last edited by Mylove; 21-05-2005, 10:30 AM.

            Ghi chú


            • #7
              Ðề: Dxf và Dimension trong AutoCAD

              (defun ModifyList(LST Code CodeValue)
              (setq Old(assoc Code LST)
              New(cons Code CodeValue)
              LST (subst New Old LST))
              )
              (defun C:TITLE()
              ;;; (setq PT(getpoint "\nInsert Point: "))
              ;;; (setq DRWSCALE(getreal "\Drawing Scale: "))
              (setq ListTextTitle
              '((0 . "TEXT")
              (100 . "AcDbEntity") (67 . 0) (410 . "Model") (8 . "GhiChu") (62 . 113)
              (100 . "AcDbText") (10 3002.63 271.747 0.0) (40 . 630.0) (1 . "BA/RNG THO/M/SNG KE/M KHO/M/SI L/}/{/JNG")
              (50 . 0.0) (41 . 0.7) (51 . 0.0) (7 . "RomanD") (71 . 0) (72 . 1)(73 . 0)
              (11 8158.13 271.747 0.0) (210 0.0 0.0 1.0)))
              ;;; (setq Old(assoc 40 ListTextTitle)
              ;;; New(cons 40 1000)
              ;;; ListTextTitle (subst New Old ListTextTitle))
              (ModifyList ListTextTitle 40 1000)
              ;;; (entmake ListTextTitle)
              )

              Bác Lam xem hộ em một cái, nó không chịu chạy gì cả, Khi ModifyList thì được nhưng khi dùng hàm entmake thì mã 40 vẫn có giá trị là 630 chứ không phải 1000, thế nghĩa là sao

              Ghi chú


              • #8
                Ðề: Dxf và Dimension trong AutoCAD

                Bác ơi đấy là trường hợp chương trình này dùng hàm ListTextTitle thế còn khi chương trình dùng tên khác ListTextTitle thi làm thế nào, hình như viết như thế thì hàm ModifyList này không được tổng quát cho lắm đúng không

                Ghi chú


                • #9
                  Ðề: Dxf và Dimension trong AutoCAD

                  Bác Lam ơi, biến cục bộ có tham chiếu được không
                  VD (defun 123 ( / c d))
                  khi dùng hàm có dùng được kiểu này (123 e f) không

                  Ghi chú


                  • #10
                    Ðề: Dxf và Dimension trong AutoCAD

                    Bác Lam ơi làm cách nào để khi minh ấn TAB hoặc ENTER thì hộp EDIT BOX nhận giá trị không, ví dụ như mình đánh 10/2 vào EDITBOX1 sau đó ấn ENTER hoặc TAB thì nó nhẩy sang EDITBOX2 và nó hiển thị trong EDITBOX1 là 5 không giống như Sap2000v8 ấy

                    Ghi chú


                    • #11
                      Ðề: Dxf và Dimension trong AutoCAD

                      (defun C:KT()
                      (setq LISTSEARCH (tblsearch "dimstyle" "standard"))
                      (setq KEYWORD (assoc 2 LISTSEARCH))
                      (setq LISTSEARCH (member KEYWORD LISTSEARCH))

                      (setq LISTOBJNAME (entget(tblobjname "dimstyle" "standard")))
                      (setq LISTOBINAME1 (reverse LISTOBJNAME))
                      (setq LISTOBJNAME (member KEYWORD LISTOBINAME1))
                      (setq LISTOBJNAME1 (cdr LISTOBJNAME))

                      (setq N (length LISTOBJNAME1))
                      (setq LISTDIM LISTSEARCH)
                      (setq N1 0)
                      (while (<= N1 (- N 1))
                      (setq L1 (nth N1 LISTOBJNAME1))
                      (setq LISTDIM (cons L1 LISTDIM))
                      (setq N1 (1+ N1))
                      )
                      (setq LISTDIMENSION LISTDIM)

                      (setq DIMNAME(tblobjname "DIMSTYLE" "standard")
                      new "Oblique"
                      old(assoc 5 LISTDIMENSION)
                      new(cons 5 new)
                      LISTDIMENSION (subst new old LISTDIMENSION))
                      (entmod LISTDIMENSION)
                      (entupd DIMNAME)
                      (command "-DimStyle" "R" "standard")
                      )

                      - Bác Lam ơi xem lại hộ em cái hàm này nhé, sao dùng được cho mã số 40 mà không dùng được cho mã số 5 này vậy
                      - Mà hàm này có thể dùng cho tất cả các mã chưa

                      Ghi chú


                      • #12
                        Ðề: Dxf và Dimension trong AutoCAD

                        Bác Lam ơi hỏi ngoài lề một chút làm cách nào viết được file ARX, có phải file ARX giống như các file DLL không
                        Bây giờ có một file DLL làm cách nào dùng trong LISP

                        Ghi chú


                        • #13
                          Ðề: Dxf và Dimension trong AutoCAD

                          Bác ơi thế có cách nào dùng DLL trong autoLISP không, vì em có một AxtiveDLL có thể chuyển từ chuỗi ký tự thành biểu thức được em muốn dùng trong AutoLISP

                          Ghi chú


                          • #14
                            Ðề: Dxf và Dimension trong AutoCAD

                            Nguyên văn bởi nglam_adg
                            .....
                            .......
                            Nếu làm được với ObjectARX thì rất hay nhưng hạn chế lớn nhất là khả năng tương thích và support cho từng phiên bản AutoCAD. Bạn chịu khó đọc Help vì giải thích thì dài lắm. Ở Hà nội, tôi mới chỉ thấy ObjectARX support AutoCAD 2000 và AutoCAD 2002.
                            Điều Nguyễn Lam nói hạn chế của ObjectARX là khả năng tương thích và support cho từng phiên bản AutoCAD chỉ đúng với trước đây thôi. Bây giờ, các phiên bản CAD mới hơn có thể load các arx dịch bằng arx cũ. VD : CAD 2005 có thể load ObjectArx 2004. Điều này cũng chỉ ra rằng, không phải ObjectArx chỉ support CAD 2000,2002.
                            Trong CAD 14, ObjectArx đã được giới thiệu, và càng ngày càng hoàn thiện.
                            Để biết thêm thông tin về ObjectArx, bạn có thể vào mục " ObjectArx ... có ai quan tâm, ngay trong diễn đàn này". Hoặc nếu muốn tường tận hơn, vào trang : objectarx.com . Bạn có thể tải SDK cho các phiên bản CAD 2004,2005,2006 . Ngôn ngữ lập trình : C++, viết trong Visual Studio 2002 . Nếu bạn quan tâm thì hãy lên tiếng, mình sẽ hướng dẫn cụ thể từ đầu.

                            Ghi chú


                            • #15
                              Ðề: Dxf và Dimension trong AutoCAD

                              Load các modul .arx từ các dòng lisp là cách làm thông dụng nhất mà những người phát triển bằng arx hay làm. Kịch bản thông dụng thường là:
                              Dùng Lisp để nạp các menu, command...khi CAD khởi động --> Các arx cần thiết sẽ được gọi, kích hoạt...thông qua các menu, command đã nạp từ trước.

                              Lưu ý: Với .NET modul, hiện tại chỉ có thể nạp thông qua một kịch bản duy nhất: thông qua lệnh NETload của CAD ---> chọn modul cần load(file .dll). Do AutoCAD.NET APIs hiện tại chưa hỗ trợ "remote control"...nên chưa thể load tự động các modul .NET khi cad khởi động.

                              Ghi chú

                              casino siteleri bahis siteleri
                              erotik film izle Rus escort gaziantep rus escort
                              deneme bonusu veren siteler deneme bonusu deneme bonusu veren siteler
                              bahis siteleri
                              bahisnow giri? casinoslot sultanbet giri? grandpashabet giri?
                              hd sex video
                              Mobilbahis
                              antalya escort bayan
                              gaziantep escort
                              betpas gncel link
                              gaziantep escort
                              bonus veren siteler
                              pinbahis pinbahis dizitune.com
                              bostanci escort pendik escort
                              ?stanbul Escort
                              Car Fuck XXX ????? ???????? ?????? ? ???? ????? sexo gay gratis xxxx
                              betbonusking.com deneme bonusu
                              deneme bonusu veren siteler deneme bonusu veren siteler bonus veren siteler
                              gvenilir casino siteleri
                              Kacak iddaa Siteleri
                              mraniye escort sancaktepe escort
                              quixproc.com
                              Working...
                              X