Chuyển đến nội dung
Diễn đàn CADViet
lethanh2004

Nhờ ACE giúp đỡ về đo khoảng cách trong Block att

Các bài được khuyến nghị

Em xin phép ace trong diễn đàn cho em hỏi ngu 1 chút .  Em được biết block att có thể insert field … tọa độ vào đó . vậy cho em hỏi nó có thể tự động ghi khoảng cách giữa 2 block Att với nhau không ? nếu có thì cách làm như thế nào ! mong ace chỉ dẫn giúp . ví dụ như hình dưới

1.jpg

tesdokc.dwg

Chia sẻ bài đăng này


Liên kết tới bài đăng
Chia sẻ trên các trang web khác
4 giờ trước, lethanh2004 đã nói:

Em xin phép ace trong diễn đàn cho em hỏi ngu 1 chút .  Em được biết block att có thể insert field … tọa độ vào đó . vậy cho em hỏi nó có thể tự động ghi khoảng cách giữa 2 block Att với nhau không ? nếu có thì cách làm như thế nào ! mong ace chỉ dẫn giúp . ví dụ như hình dưới

1.jpg

tesdokc.dwg

 

- Mỗi block có 1 toạ độ insert, nên có thể tạo field toạ độ insert vào trong các thuộc tính được. Ở đây khoảng cách giữa 1 block  với N block khác thì biết bao nhiêu ATT trong block màu đỏ? có khi 2 có khi 100 block thì làm sao?

- Muốn tìm các block B, C gần block màu đỏ (mốc 1A), người ta tạo 1 "fenc" đường bao (màu vàng nét đứt) ví dụ có phạm vi R=10 thì sẽ tìm ra, từ đó tính khoảng cách giữa block màu đỏ đến các block B, C. Tuy nhiên có trường hợp nó chồng chất nhau như ở trung tâm hình dưới đây thì sao?

- Nếu tìm được thì ghi các khoảng cách này thành 1 bảng có giá trị text hat att được gắn field ??

image.thumb.png.be652f27b942edb3b31c17052522464d.png

 

 

 

  • Like 2

Chia sẻ bài đăng này


Liên kết tới bài đăng
Chia sẻ trên các trang web khác
2 giờ trước, lethanh2004 đã nói:

Bác thiệp có thể chỉ chi tiết cho em hơn đc ko . do mục đích e làm  không nhiều đối tượng và cũng không gần như bác mô tả ạ

 

File cad đính kèm đã làm mẫu bạn 1 cái ATT, tuy nhiên đây là cách thủ công, còn muốn dùng lisp cho nhanh thì phải nhờ các bác trên này viết giùm

tesdokc fix bvc.dwg

Chia sẻ bài đăng này


Liên kết tới bài đăng
Chia sẻ trên các trang web khác

Lisp đo khoảng cách từ điểm insert block A đến các điểm insert block B, C; đưa các số đo khoảng cách vào trong 1 Table, có tạo field các khoảng cách này vào cột distance. Sau khi chạy lisp xong, nếu người dùng move các block A, B, C, thì giá trị khoảng cách sẽ thay đổi theo, sau khi đánh lệnh redraw.

Nên nhớ: để tìm các block B, C từ block A, lisp yêu cầu người dùng nhập "bán kính ảnh hưởng", nghĩa là từ tâm là điểm insert block A, lisp sẽ tạo 1 đường gần như tròn, trong "đường tròn" này phải có các block B và C nằm trong. Người dùng lisp phải chọn "bán kính ảnh hưởng" sao cho phù hợp để từ block A nó tìm ra được các block B, C gần nó nhất.

Kỳ công của lisp này là tạo field khoảng cách 2 điểm insertpoint của block đưa vào cell của table đó.

 

;;  Lisp "Statistics table: Add field Distance of insertionPoints of blocks"
;;;         by  : Trân Thiêp
;;;         tel : 0918841230
;;;         date: 04/2020
(defun DXF (code en) (cdr (assoc code (entget en))))
(defun po-20p (p R / lp n)
    (setq n 1)
    (repeat 20 (setq lp (cons (polar p (* pi 0.1 n) R) lp)) (setq n (1+ n)))
    lp
)
(defun c:dkcb (/       ssA
               ApCad   actDoc
               *Model* *TextStyles*
               FontFile
               prec    col
               row     l1
               l2      pTab1
               pTab2   objTable
               n       ssB-C
               ent-L_A ent-L_BC
               tag_lst dX
               dX*     dY
               dX*     str
               obj1    obj2
               ID1     ID2
               dis     Rad
               len
              )
    (command "undo" "be")
    (setq ApCad        (vlax-get-acad-object)
          actDoc       (vla-get-ActiveDocument ApCad)
          *Model*      (vla-get-ModelSpace actDoc)
          *TextStyles* (vla-get-TextStyles actDoc)
    )
    (setq FontFile "C:\\Windows\\Fonts\\Times.ttf")
    (if (not (tblobjname "STYLE" "TNR"))
        (progn (setq tsobj (vla-add *TextStyles* "TNR"))
               (vla-put-FontFile tsobj FontFile)
        )
    )
    (defun *error* (msg)
        (or (wcmatch (strcase msg) "*BREAK,*CANCEL*,*EXIT*")
            (princ (strcat "\n** Error: " msg " **"))
        )
        (acet-sysvar-restore)
        (command "undo" "en")
        (princ)
    )
    (acet-sysvar-set '("cmdecho" 0 "osmode" 0))
    (setq A2k (atof (substr (getvar 'acadver) 1 4))) ;
    (Setq col 3
          row 3
          L1  nil
    )
    (setq W 15)
    (setq pTab1 (getvar "Extmin"))
    (setq pTab1 (list (- (car pTab1) (* W col)) (- (cadr pTab1) (* W row)) 0.0))
    (if (> A2k 16)
        (progn (setq objTable (vla-AddTable *Model*
                                            (vlax-3D-point pTab1)
                                            row
                                            col
                                            5
                                            W
                              )
               )
               (vla-SetTextHeight objTable acTitleRow 2.0)
               (vla-SetTextStyle objTable (+ acHeaderRow acTitleRow) "TNR")
               (vla-SetRowHeight objTable 0 10)
               (vla-setText
                   objTable
                   0
                   0
                   "Statistics table: Distance of insertionPoints of blocks"
               )
               (vla-setText objTable 1 0 "Blocknames")
               (vla-setText objTable 1 2 "Distance    (m)")
               (vla-MergeCells objTable 1 1 0 1)
               (vla-MergeCells objTable 1 2 2 2)
               (vla-setText objTable 2 0 "from")
               (vla-setText objTable 2 1 "to")
               (setq n 3)
               (setq ssA (ssget '((0 . "INSERT") (2 . "A"))))
               (if (null (setq
                             prec (getint
                                      (acet-str-format
                                          "\nEnter number of decimal places: <%1> "
                                          (itoa (getvar "useri1"))
                                      )
                                  )
                         )
                   )
                   (setq prec (getvar "useri1"))
               )
               (setvar "useri1" prec)
               (or (/= (getvar "userr1") 0.0) (setvar "userr1" 14))
               (if (null (setq Rad (getreal (acet-str-format
                                                "\nEnter Influence radius: <%1> "
                                                (rtos (getvar "userr1") 2 prec)
                                            )
                                   )
                         )
                   )
                   (setq Rad (getvar "userr1"))
               )
               (setvar "userr1" Rad)
               (if ssA
                   (progn (setq ent-L_A (acet-ss-to-list ssA))
                          (mapcar '(lambda (e)
                                       (setq tag_lst (acet-insert-attrib-get e))
                                       (setq L1 (append L1
                                                        (list (list (strcat (cadar tag_lst)
                                                                            (cadadr tag_lst)
                                                                    )
                                                                    e
                                                              )
                                                        )
                                                )
                                       )
                                   )
                                  ent-L_A
                          )
                          (setq L1 (vl-sort L1 '(lambda (e1 e2) (< (car e1) (car e2))))
                          )
                          (foreach lst L1
                              (setq name1 (car lst)
                                    entA  (cadr lst)
                              )
                              (setq obj1 (vlax-ename->vla-object entA)
                                    ID1  (vla-get-objectid obj1)
                              )
                              (setq lstpo (po-20p (dxf 10 entA) Rad))
                              (setq ssB-C (ssget "CP"
                                                 lstpo
                                                 '((0 . "INSERT") (2 . "B,C"))
                                          )
                              )
                              (setq L2 nil)
                              (if ssB-C
                                  (progn (setq ent-L_BC (acet-ss-to-list ssB-C))
                                         (setq len (length ent-L_BC))
                                         (vla-InsertRows objTable row 5 len)
                                         (setq row (+ row len))
                                         (mapcar '(lambda (e)
                                                      (setq L2 (append L2
                                                                       (list (list (dxf 2 e) e))
                                                               )
                                                      )
                                                  )
                                                 ent-L_BC
                                         )
                                         (setq L2 (vl-sort L2
                                                           '(lambda (e1 e2)
                                                                (< (car e1) (car e2))
                                                            )
                                                  )
                                         )
                                         (foreach lst L2
                                             (setq name2 (car lst)
                                                   entBC (cadr lst)
                                             )
                                             (setq name2 (dxf 2 entBC))
                                             (setq obj2 (vlax-ename->vla-object entBC)
                                                   ID2  (vla-get-objectid obj2)
                                             )
                                             (setq dX (strcat
                                                          (acet-str-format
                                                              "(%<\\AcObjProp Object(%<\\_ObjId %1>%).InsertionPoint \\f \"%lu2%pt1%pr%2\">%-"
                                                              (itoa ID2)
                                                              (itoa prec)
                                                          )
                                                          (acet-str-format
                                                              "%<\\AcObjProp Object(%<\\_ObjId %1>%).InsertionPoint \\f \"%lu2%pt1%pr%2\">%)"
                                                              (itoa ID1)
                                                              (itoa prec)
                                                          )
                                                      )
                                             )
                                             (setq dY (strcat
                                                          (acet-str-format
                                                              "(%<\\AcObjProp Object(%<\\_ObjId %1>%).InsertionPoint \\f \"%lu2%pt2%pr%2\">%-"
                                                              (itoa ID2)
                                                              (itoa prec)
                                                          )
                                                          (acet-str-format
                                                              "%<\\AcObjProp Object(%<\\_ObjId %1>%).InsertionPoint \\f \"%lu2%pt2%pr%2\">%)"
                                                              (itoa ID1)
                                                              (itoa prec)
                                                          )
                                                      )
                                             )
                                             (setq dX* (strcat dX "*" dX)
                                                   dY* (strcat dY "*" dY)
                                             )
                                             (setq dis
                                                      (strcat "sqrt" "(" dX* "+" dY* ")")
                                             )
                                             (setq str
                                                      (acet-str-format
                                                          "%<\\AcExpr (%1) \\f \"%lu2%pr%2\">%"
                                                          dis
                                                          (itoa prec)
                                                      )
                                             )
                                             (vla-setText objTable n 0 name1)
                                             (vla-setText objTable n 1 name2)
                                             (vla-setText objTable n 2 str)
                                             (setq n (+ n 1))
                                         )
                                  )
                              )
                          )
                   )
               )
               (vla-SetTextStyle objTable acDataRow "TNR")
               (setq rowtypes (list acHeaderRow acTitleRow acDataRow))
               (mapcar '(lambda (x) (vla-SetAlignment objTable x acMiddleCenter))
                       rowtypes
               )
               (vla-SetTextHeight objTable (+ acHeaderRow acDataRow) 1.8)
               (setq pTab2 (acet-ss-drag-move
                               (ssadd (vlax-vla-object->ename objTable))
                               pTab1
                               "\n<<< Pick a point for set place of Table >>> "
                           )
               )
               (vla-move objTable (vlax-3d-point pTab1) (vlax-3d-point pTab2))
               (vlax-release-object objtable)
        )
        (acet-ui-message "This autoCad version doesn't support addTable"
                         "Warning"
                         4144
        )
    ) ;_if
    (acet-sysvar-restore)
    (command "undo" "en")
    (princ "\nOK")
    (princ)
)

 

  • Like 1

Chia sẻ bài đăng này


Liên kết tới bài đăng
Chia sẻ trên các trang web khác

Dạ trước tiên cháu cảm ơn chú Thiệp đã quan tâm giúp cháu trong vấn đề này  ….

Chú có thể cho cháu hỏi là

1.       Cháu test ở bản vẽ đầu thì khoảng cách chạy ra thấy chưa đúng với BV

2.       Cháu test bản vẽ khác thì lisp lại không chọn được đối tượng ( cháu gửi bv bên dưới)

3.       Chú Có thể sửa giúp cháu thành (thay thế block màu đỏ thành file txt để chạy ra file mẫu như bên layout không ) cháu cảm ơn chú ạ.

 

Luoi cap 1.txt

tes.dwg

Chia sẻ bài đăng này


Liên kết tới bài đăng
Chia sẻ trên các trang web khác
2 giờ trước, lethanh2004 đã nói:

Dạ trước tiên cháu cảm ơn chú Thiệp đã quan tâm giúp cháu trong vấn đề này  ….

Chú có thể cho cháu hỏi là

1.       Cháu test ở bản vẽ đầu thì khoảng cách chạy ra thấy chưa đúng với BV

2.       Cháu test bản vẽ khác thì lisp lại không chọn được đối tượng ( cháu gửi bv bên dưới)

3.       Chú Có thể sửa giúp cháu thành (thay thế block màu đỏ thành file txt để chạy ra file mẫu như bên layout không ) cháu cảm ơn chú ạ.

 

Luoi cap 1.txt

tes.dwg

1. Bản vẽ đầu là bản vẽ nào? có phải bản vẽ đưa lên cadviet làm mẫu không? Đối với bản vẽ này, lisp chạy rất tốt, khoảng cách tìm được với nhiều kiểu số lẻ sau số thập phân mà.

2. Bản vẽ khác có giống bản vẽ tes.dwg không? Đối với bản vẽ này, có nhiều vấn đề:

* Các block cần làm tâm (DC) và block cần đo khoảng cách (GHICHU) có các điểm chèn (X,Y,Z) bị nhảy rất xa so với "tâm" block, Z cao độ của các block có cái bị nằm dưới mực nước biển! vì vậy việc đo khoảng cách sẽ không bao giờ chính xác.

* Tên của block cũng đã bị thay đổi so với bản vẽ mẫu up lên để viết lisp.

* Tính chất thuộc tính của các block cũng khác xa với bản vẽ mẫu up lên để viết lisp:

          - Block cần làm tâm đo: ở bản vẽ mẫu: lấy tên các thuộc tính làm tên block cần làm tâm (thuộc tính "1" =1, 2, 3 ,4 và thuộc tính "A"=A). Đối với bản vẽ tes.dwg các thuộc tính lại là tên mốc và giá trị cao độ mốc, hai cái khác nhau.

          - Block cần đo: bản vẽ mẫu tên block là B, C còn bản vẽ tes.dwg thì chỉ có 1 tên duy nhất là GHICHU, nhưng thuộc tính thì có thay đổi.

Nói chung là bản vẽ up làm mẫu và bản vẽ tes.dwg khác nhau hoàn toàn.

3. (thay thế block màu đỏ thành file txt để chạy ra file mẫu như bên layout không ): việc lấy dữ liệu bên ngoài thay thế cho việc tìm toạ độ điểm chèn các block cần làm tâm đo: Tại sao không nói trước luôn để khỏi chỉnh sửa lisp?

Lisp chỉ đưa ra bảng table. sau đó người dùng đánhlệnh TABLEEXPORT để xuất dữ liệu table ra file *.csv; Copy các số liệu trong file *.csv vào bản vẽ khác hoặc vào layout khác.

 

Chia sẻ bài đăng này


Liên kết tới bài đăng
Chia sẻ trên các trang web khác
1 giờ trước, thiep đã nói:

1. Bản vẽ đầu là bản vẽ nào? có phải bản vẽ đưa lên cadviet làm mẫu không? Đối với bản vẽ này, lisp chạy rất tốt, khoảng cách tìm được với nhiều kiểu số lẻ sau số thập phân mà.

2. Bản vẽ khác có giống bản vẽ tes.dwg không? Đối với bản vẽ này, có nhiều vấn đề:

* Các block cần làm tâm (DC) và block cần đo khoảng cách (GHICHU) có các điểm chèn (X,Y,Z) bị nhảy rất xa so với "tâm" block, Z cao độ của các block có cái bị nằm dưới mực nước biển! vì vậy việc đo khoảng cách sẽ không bao giờ chính xác.

* Tên của block cũng đã bị thay đổi so với bản vẽ mẫu up lên để viết lisp.

* Tính chất thuộc tính của các block cũng khác xa với bản vẽ mẫu up lên để viết lisp:

          - Block cần làm tâm đo: ở bản vẽ mẫu: lấy tên các thuộc tính làm tên block cần làm tâm (thuộc tính "1" =1, 2, 3 ,4 và thuộc tính "A"=A). Đối với bản vẽ tes.dwg các thuộc tính lại là tên mốc và giá trị cao độ mốc, hai cái khác nhau.

          - Block cần đo: bản vẽ mẫu tên block là B, C còn bản vẽ tes.dwg thì chỉ có 1 tên duy nhất là GHICHU, nhưng thuộc tính thì có thay đổi.

Nói chung là bản vẽ up làm mẫu và bản vẽ tes.dwg khác nhau hoàn toàn.

3. (thay thế block màu đỏ thành file txt để chạy ra file mẫu như bên layout không ): việc lấy dữ liệu bên ngoài thay thế cho việc tìm toạ độ điểm chèn các block cần làm tâm đo: Tại sao không nói trước luôn để khỏi chỉnh sửa lisp?

Lisp chỉ đưa ra bảng table. sau đó người dùng đánhlệnh TABLEEXPORT để xuất dữ liệu table ra file *.csv; Copy các số liệu trong file *.csv vào bản vẽ khác hoặc vào layout khác.

 

Dear Chú Thiệp …

Thật sự cháu cũng mới biết và ứng dụng ATT vào công việc của mình . cháu nghĩ là Att thì nó giống nhau với lại lúc đầu cháu chưa nghĩ là sẽ dung đến lisp . nên có gì mong chú bỏ qua

Cảm ơn chú đã trả lời

Chia sẻ bài đăng này


Liên kết tới bài đăng
Chia sẻ trên các trang web khác
53 phút trước, Biet ve CAD đã nói:

Bắt được con Kiến rồi, giờ bắt tiếp con Voi to hơn thử xem có được không ^^

Chào Bạn Biet ve CAD …! Không biết tuổi tác bạn thế nào cho dễ xưng hô . nhưng tôi nói với bạn thế này

Có thể kiến thức bạn hơn tôi . Bạn học hành hơn tôi . nhưng bạn hãy vẫn dụng kiến thức của mình để giúp chính bạn , nếu có time thì giúp đỡ mọi người . còn nếu không thì lên im lặng , đừng chọc gậy bánh xe kiểu như vậy . Cảm ơn đã đọc

Thân …!

xin Info để lúc nào tặng bạn cuốn sách ^^

1-FNQF.jpg

Chia sẻ bài đăng này


Liên kết tới bài đăng
Chia sẻ trên các trang web khác
17 phút trước, lethanh2004 đã nói:

Chào Bạn Biet ve CAD …! Không biết tuổi tác bạn thế nào cho dễ xưng hô . nhưng tôi nói với bạn thế này

Có thể kiến thức bạn hơn tôi . Bạn học hành hơn tôi . nhưng bạn hãy vẫn dụng kiến thức của mình để giúp chính bạn , nếu có time thì giúp đỡ mọi người . còn nếu không thì lên im lặng , đừng chọc gậy bánh xe kiểu như vậy . Cảm ơn đã đọc

Thân …!

xin Info để lúc nào tặng bạn cuốn sách ^^

 

Không nên suy nghĩ tiêu cực như vậy bạn à, hãy hiểu hết ý nghĩa đã rồi mới phê bình hay đại loại như vậy bạn

Bạn cũng đăng nhiều bài, xin lisp cũng nhiều mà cách bạn yêu cầu cảm thấy ko nhất quán, để được đoạn lispp như bác Thiệp viết ko phải đơn giản, nên phải sửa lisp hay làm lisp mới với yêu cầu chưa rõ ràng, chưa có sự đầu tư kỹ lưỡng của người yêu cầu thì thành ra là làm khó người viết

Bạn hiểu ý mình chứ, suy nghĩ kỹ lưỡng trước khi yêu cầu bạn nhé

Chia sẻ bài đăng này


Liên kết tới bài đăng
Chia sẻ trên các trang web khác
1 giờ trước, Biet ve CAD đã nói:

Bắt được con Kiến rồi, giờ bắt tiếp con Voi to hơn thử xem có được không ^^

Hề hề hề, tất cả dữ liệu đề bài đưa ra đều làm được.

Việc định danh tên block "làm tâm" hay việc lấy dữ liệu ngoài thay thế toạ độ block "làm tâm" cũng không khó.

Việc định danh tên block theo giá trị thuộc tính để đo khoảng cách cũng không khó.

Chỉ khó là người nhờ viết lisp lại ra đầu bài không rõ ràng làm người viết lisp phải khốn khổ. Đưa bản vẽ này làm mẫu, lại dùng bản vẽ khác, mà bản vẽ khác cũng sai về toạ độ điểm chèn block mới khốn khổ.

Đầu tư viết 1 lisp như thế này rất vất vả, lấy được 4 field từ 2 đối tượng tính căn bậc hai của tổng 2 bình phương của hiệu từng cặp 4 field này không đơn giản chút nào, bây giờ thì không cần dùng nữa, đôi khi cảm thấy nản.

Chia sẻ bài đăng này


Liên kết tới bài đăng
Chia sẻ trên các trang web khác
35 phút trước, thiep đã nói:

Hề hề hề, tất cả dữ liệu đề bài đưa ra đều làm được.

Việc định danh tên block "làm tâm" hay việc lấy dữ liệu ngoài thay thế toạ độ block "làm tâm" cũng không khó.

Việc định danh tên block theo giá trị thuộc tính để đo khoảng cách cũng không khó.

Chỉ khó là người nhờ viết lisp lại ra đầu bài không rõ ràng làm người viết lisp phải khốn khổ. Đưa bản vẽ này làm mẫu, lại dùng bản vẽ khác, mà bản vẽ khác cũng sai về toạ độ điểm chèn block mới khốn khổ.

Đầu tư viết 1 lisp như thế này rất vất vả, lấy được 4 field từ 2 đối tượng tính căn bậc hai của tổng 2 bình phương của hiệu từng cặp 4 field này không đơn giản chút nào, bây giờ thì không cần dùng nữa, đôi khi cảm thấy nản.

Dạ vâng bác, em cũng biết lisp nên cảm thấy được cái khó, thấy bác viết rất nhiệt tình, cách thức dùng lisp cũng rất chu đáo lường trước được các tình huống mà người yêu cầu chưa đưa ra. Nên em chỉ nói vui như vậy gây ra hiểu nhầm ^^

 

  • Like 1

Chia sẻ bài đăng này


Liên kết tới bài đăng
Chia sẻ trên các trang web khác
3 giờ trước, thiep đã nói:

Hề hề hề, tất cả dữ liệu đề bài đưa ra đều làm được.

Việc định danh tên block "làm tâm" hay việc lấy dữ liệu ngoài thay thế toạ độ block "làm tâm" cũng không khó.

Việc định danh tên block theo giá trị thuộc tính để đo khoảng cách cũng không khó.

Chỉ khó là người nhờ viết lisp lại ra đầu bài không rõ ràng làm người viết lisp phải khốn khổ. Đưa bản vẽ này làm mẫu, lại dùng bản vẽ khác, mà bản vẽ khác cũng sai về toạ độ điểm chèn block mới khốn khổ.

Đầu tư viết 1 lisp như thế này rất vất vả, lấy được 4 field từ 2 đối tượng tính căn bậc hai của tổng 2 bình phương của hiệu từng cặp 4 field này không đơn giản chút nào, bây giờ thì không cần dùng nữa, đôi khi cảm thấy nản.

Thưa chú

Thật sự thì chuyên ngành cháu cũng không đi sâu về cad . lên cháu dốt đặc . thời gian nghỉ covis cũng chả biết phải làm gì lên mạo muội lên Diễn đàn nhờ các bác , các chú và ace giúp đỡ thôi . cũng vì dốt lên cái diễn đạt đầu bài , thân bài ….nó ko ăn khớp đc với nhau .Chú trách cũng phải lắm ạ . cũng biết là ngoài công việc , gia đình … chú còn giúp đc cháu thế này thì cháu vui lắm lắm . Cháu cũng không biết nói gì hơn . Cảm ơn chú có gì chú bỏ quá cho ạ

Chia sẻ bài đăng này


Liên kết tới bài đăng
Chia sẻ trên các trang web khác
Vào lúc 16/4/2020 tại 12:01, thiep đã nói:

 

- Mỗi block có 1 toạ độ insert, nên có thể tạo field toạ độ insert vào trong các thuộc tính được. Ở đây khoảng cách giữa 1 block  với N block khác thì biết bao nhiêu ATT trong block màu đỏ? có khi 2 có khi 100 block thì làm sao?

- Muốn tìm các block B, C gần block màu đỏ (mốc 1A), người ta tạo 1 "fenc" đường bao (màu vàng nét đứt) ví dụ có phạm vi R=10 thì sẽ tìm ra, từ đó tính khoảng cách giữa block màu đỏ đến các block B, C. Tuy nhiên có trường hợp nó chồng chất nhau như ở trung tâm hình dưới đây thì sao?

- Nếu tìm được thì ghi các khoảng cách này thành 1 bảng có giá trị text hat att được gắn field ??

image.thumb.png.be652f27b942edb3b31c17052522464d.png

 

 

 

Dear bác Thiệp. Em xin phép phiền bác giúp em với ạ. Em cũng đg cần 1 list đo khoảng cách giữa các block thuộc tính. Em thử dùng lisp này mà không được. Chắc nó không phù hợp với bản vẽ của em ạ. Em gửi bản vẽ lên đây, nhờ bác giúp đỡ ạ. 

Mong muốn của em là lisp sẽ xuất ra 1 file dữ liệu có thông tin như sau

Cột 1: Tên các attribute điểm đầu (Ví dụ: TĐ1.1.1)

Cột 2: Tên các attribute điểm cuối (Ví dụ: TĐ1.4.1)

Cột 3: Khoảng cách giữa 2 điểm (Đơn vị m)

(Trong lệnh của lisp cũng vẫn được lựa chọn bán kính tối đa giữa 2 đối tượng được đo; chọn số đơn vị làm tròn sau dấu phẩy )

Rất mong bác giúp đỡ, cảm ơn bác nhiều ạ!

image.thumb.png.506042c18a0a3dc4dd095f2e47cc1fda.png

lispdokc.dwg

Chia sẻ bài đăng này


Liên kết tới bài đăng
Chia sẻ trên các trang web khác

Tạo một tài khoản hoặc đăng nhập để nhận xét

Bạn cần phải là một thành viên để lại một bình luận

Tạo tài khoản

Đăng ký một tài khoản mới trong cộng đồng của chúng tôi. Điều đó dễ mà.

Đăng ký tài khoản mới

Đăng nhập

Bạn có sẵn sàng để tạo một tài khoản ? Đăng nhập tại đây.

Đăng nhập ngay

×