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

Danh Cong

Moderator
  • Số lượng nội dung

    1.387
  • Đã tham gia

  • Lần ghé thăm cuối

  • Ngày trúng

    117

Bài đăng được đăng bởi Danh Cong


  1. 1 giờ} trướ}c, AutoTay.com đã nói:

    Dạ, cũng không được luôn ạ. VNARIAL_0.TTF hay VNARIAL.TTF cũng không được.

     

    + Sao đường dẫn thư mục của bạn này lại dài loằng ngoằng thế  :)))))

    Tôi tưởng nó gọn thế này thôi @@: C:\Windows\Fonts

    +Font .TTF là font dành cho Win. Nên việc copy vào trong font cad thì cũng .... hơi thừa thì phải .

    Font.png

    • Like 1

  2. 8 giờ trước, 790312 đã nói:

    e chưa nghĩ ra được cách nếu nhập số lượng điểm thì sẽ xử lý như thế nào? nên e chỉ cần lisp để nhập chiều dài và góc cho từng đoạn thẳng một bác ah. Bác có ý tưởng gì để xử lý vấn đề này nhanh hơn không? Cảm ơn bác nhiều.

    + Thử cái này nhé:

    (defun c:DC (/ ANG ANG1 L P1 P2)
      (setq P1 (getpoint "\nPick first Point:")
        P2 (getpoint P1 "\nPick second Point:")
        Ang (angle P1 P2))
      (while (and (setq Ang1 (getreal "\nInput Angle:"))
              (setq L (getreal "\nInput  Lenght:")))
             (command ".line" "non" P1 "non" (polar P1 (- Ang (* pi (/ Ang1 180))) L) ""))
      (princ))

    • Vote tăng 1

  3. 45 phút trước, 790312 đã nói:

    Đúng vậy, sau bước 3 sẽ là: chọn điểm bắt đầu rồi tới bước 4. Lisp này mình cần vì mình cần nhập rất nhiều điểm xuất phát từ 1 điểm nhưng có chiều dài và góc khác nhau. Mong nhận được sự giúp đỡ của mọi người.

    + Thật ra thì tôi nghĩ thế này:

    Thay vì lisp y xì như chủ thớt nghĩ, giải pháp khác là có 1 phím bật chế độ UCS dành cho Object. Vẽ hay thao tác xong thì lại bấm về UCS world. Thế là tiện cả đôi đường, nhà nhà đều vui @@

    Còn nếu bạn muốn viết đúng như những gì bạn yêu cầu thì cũng đơn giản thôi. Nhưng để mai tôi viết cho ( Hiện thời đang dùng điện thoại @@)

    • Vote tăng 1

  4. 1 giờ trước, Nha Dan đã nói:

    Xin cho ý kiến !

    Mình có 1 vấn đề cần hỏi các cao thủ nha :

    Với bản vẽ đính kèm, mình gõ điểm đầu điểm cuối trong excel :

    VD : mình gõ điểm đầu A, điểm cuối F thì ra tổng các giá trị gán trên các đoạn thẳng là 1400 (100+100+300+400+300+200)

    Có cách gì mình gõ điểm đầu điểm cuối bất kì thì ra tổng các giá trị gán trên các đoạn thẳng tương ứng ko

    Xin cảm ơn

    image.png.fbb4c09f657898053b76e6dabc1c469d.png

    + Cái này liên quan đến Excel chứ liên quan gì đến Cad đâu ? @@. 


  5. 7 giờ trước, thanh96 đã nói:

    Em đang định làm bài toán lát sàn mà chưa biết logic sao cho hợp lí.

    Không biết bác gặp loại này bjo chưa ak. (em chỉ thấy rải vật thể theo đường thui ak)

    Hiện em đang có suy nghĩ thế này: (gạch axb)

    Cách 1: từ đường bao chọn và điểm mốc. kẻ các đường ngang cách nhau a.

                 -Tìm giao giữa đường thẳng đó và đường bao. Sau đó dùng lệnh Array rải đối tượng từ điểm giao bên trái sang phải.

                Nhưng cách này nếu gặp tường giật thì gạch sẽ lệch.(rải sai) chắc sửa bằng tay.zz

    Cách 2  (cách này sẽ tạo ra các điểm point trước sau copy đối tượng tạo point đó)

               - từ đường bao và điểm mốc>> giới hạn rải x,y max min, từ đó rải điểm cách a,b trong miền.

              - với các điểm (tường giật vào) thì xét các miền ngang đi qua đỉnh của đường bao từ trên xuống dưới ( Xgh và Ygh) hợp với đỉnh (Xmin, Ymax) và (Xmax, Ymax) ta sẽ được 2 miền. Nếu tia đi từ điểm giới hạn qua điểm xét mà không cắt thì loại, nếu cắt thì xét tiếp ở đỉnh tiếp theo.>>Nếu cắt thì cho vào danh sách chọn. cứ thế cho đến hết.

    Nhược điểm sẽ không nát được các miền sát mép tường.

    Không biết có ổn không anh.

    Các cách nào khả thi hơn không ak.

    Nhân tiện cái lệnh để kiểm tra xem 2 đối tương có giao nhau không là gì vậy ak. Để em ngồi mày mò ak( chắc là lâu hh)

    Nếu có thể anh viết hộ em được không ak.zz

     

     

    + Đã tốn công gõ bài thì tại sao không thêm 1 cái hình vẽ cho nó trực quan ?


  6. 2 giờ trước, thanh96 đã nói:

    Trong lisp chẳng hạn thực hiện liên tiếp các lệnh như copy break.

    Khi ctrl+z thì có thể trở lại trạng thái trước khi dùng lệnh được vậy anh.

    Dùng nhiều ctrl+z lại hơi lâu anh ak.

    Mong anh giúp ak.

     

    Noi 40d - Trai_Phai.lsp

    Thử thêm 2 dòng sau vào lisp, bạn có thể tự thêm được .

    (Defun c:DC ( / abcxyz)

    (Command "undo" "begin")

    .....

    ....

    (Command "undo" "end")

    (Princ)

    )

    • Like 1

  7. 1 giờ} trướ}c, nhunhapro123 đã nói:

    Khi mình chạy file lisp trên thì mặt cắt ngang thân trụ nó lại chạy lung tung không đúng với vị trí tim mặt cắt bệ trụ. Bạn #Danh Cong có thể giải thích giúp mình lý do tại sao không?

     

    Đã có lỗi thì sẽ sai "đâu đó" trong lisp. Tuy nhiên rất khó cho ai phải soát lỗi kiểu này, vì chẳng biết đằng nào mà lần.

    Ví dụ như code của bạn, chẳng ai biết code nào vẽ bệ trụ, thân trụ vv...., ( cũng không có dòng nào chú thích đánh dấu). Các điểm thì chỉ đặt là A, B, C theo sở thích của bạn, chứ không phải đặt là BE1, BE2.... THAN1, THAN2. Như thế, đến chính bạn sau 1 năm nữa cũng không còn nhớ bạn đặt tên điểm là ở đâu!

    Vậy khuyên bạn nên đặt tên, ghi chú rõ ràng hơn. Chứ kiểm tra lỗi kiểu này nản lắm.

    + Bạn có thể đọc 1 số thủ thuật bắt lỗi ở đây: 

     


  8. 52 phút trước, nhunhapro123 đã nói:

    ;;;;;;;;;Ve helix;;;;
    (defun C:HELIX3D()
    (setq CMD (getvar "CMDECHO"))
    (setvar "CMDECHO" 0)
    (setq BLIP (getvar "BLIPMODE"))
    (setvar "BLIPMODE" 0)
    ;Data
    (setq PITCH (getdist "\nNhap chieu cao = "))
    (setq PITCH2 (getint "\nNumber of pitches <2> = "))
    (cond ((null PITCH2) (setq PITCH2 2)))    Sai cú pháp, sai giá trị ( không có null)
    (setq RAD (getdist "\nRadius    = "))
    (setq PREC (getint "\nDivisions points <100> = "))
    (cond ((null PREC) (setq PREC 100)))    ; Sai cú pháp, sai giá trị ( không có null)
    ;
    ;Execution
    (setq TOUR 0)
    (setq ANG1 (* 0.5 pi))    ;start angle
    (setq PTO (getpoint "Start point (Center line) "))
    (setq X0 (car PTO) Y0 (cadr PTO) zo (caddr PTO)) ;* add
    (setq ANG2 (/ (* 2.0 pi) PREC))
    (setq DISTY (/ PITCH PREC))
    (command ".3dpoly" (list XO Y0 (+ zo RAD))) ;* mod    ; Sai chính tả
    (repeat PITCH2
    (repeat PREC
    (setq TOUR (+ 1 TOUR))
    (setq ANG3 (+ (* ANG2 TOUR) ANG1))
    (setq DISTY2 (* DISTY TOUR))
    (setq DISTX (* (cos ANG3) RAD))
    (setq DISTZ (* (sin ANG3) RAD))    ;* mod
    (setq PTX (list (+ DISTX X0)
    (+ DISTY2 Y0)
    (+ DISTZ Z0)))    ;* mod   ; Biến không có giá trị
    (command PTX)
    )
    )
    (command "")
    ;Rotation
    (setq ANG (getangle PTO "\nRotation angle <90>    "))
    (cond ((null ANG) (setq ANG (/ pi 2.0))))
    (setq ANG (RADI ANG))
    (setq ANG (- ANG 90.0))
    (setq ss (ssget "L"))
    (command ".ROTATE" ss PT0 ANG)
    (setvar "CMDECHO" CMD)
    (setvar "BLIPMODE" BLIP)
    (prinl)    ; Sai chính tả
    );K?t thúc chuong trình helix3d.lsp

        File lisp của mình chạy không được các cao thủ có thể xem giúp bị lỗi chỗ nào không ạ?

     

    + Kiểm tra sơ sơ ra từng này lỗi: @@.

    Chắc bạn đang viết lisp trên text? Liệu bạn có biết gì về "VLIDE" ? , Ứng dụng chuyên dùng để dành cho lâp trình lisp. Có khả năng check lỗi, hỗ trợ code ....vv....


  9. 2 giờ trước, thanhmicco đã nói:

    Hiện nay em có làm công trình về trắc địa, cần bố trì rất nhiều vị trí các trụ hoặc tương tự như thế, Em muốn nhờ các anh giúp lisp khi quét chọn vào mặt bằng lưới trục ví dụ như fiel kèm theo.

    - Ý đồ của em như sau:

    + Mỗi trụ có 4 điểm M1,M2,M3,M4 và tim trụ là điiểm giao nhau cua các trục A-1, A-2....B-1,B-2...(đường bao mố  trụ có thể là Line hoặc Polyline)

    Em nhờ các anh viết dùm em lisp khi quét toàn bộ mặt bằng thì sẽ cho ra file TXT hay EXCEL bao gồm cấu trúc sau: Số thứ tự, Tên các điểm bố trí M1,M2,M3....,A-1, A-2,....B-1,B-2... và Tọa độ X, Y của các điểm.

    em xin cảm ơn nhiều.

    P/S.

    Em dùng các lệnh trong cacd hay lisp COOR hay COORN thì no cũng cho tọa độ X, Y. Nhưng nó ko sắp xếp theo thứ tự và cũng không có Tên các điểm như trên.

    truc cong trinh.dwg

    + COORN vẫn sắp xếp theo thứ tự. Vấn đề là phải Pick tay các điểm. Và nếu đã theo thứ tự rồi thì việc đặt tên trong Excel không phải là vấn đề.

    Cái nữa là làm thế nào để biết vị trí nào là M1, M2, trục nào là A1, A2  ?? Xác định bằng "mắt" thì chắc đánh đố nhau rồi, lisp không làm được.

    Các vấn đề trên có thể giải quyết được bằng cách tại mỗi điểm bạn đặt 1 block ATT tribute vào đấy, ghi đầy đủ tên tuổi họ hàng hang hốc vào. Rồi Search trên diễn đàn để làm tiếp !

    • Vote giảm 1

  10. 3 giờ trước, zen2505 đã nói:

    E đang chuyển bản vẽ đi gia công nhưng khi vẽ lên rồi không xác định được tọa độ cho bên gia công thực hiện. Bác có cách nào chỉ e với!

    E cám ơn bác!

    Có 2 lisp bạn cần tìm để giải quyết vấn đề này :)))) ( đã có trên diễn đàn ).

    1: Lisp chuyển SPLine thành đường Pline. 

    2: Lisp xuất toạ độ đường Pline.

×