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

NDBNGO

Thành viên
  • Số lượng nội dung

    130
  • Đã tham gia

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

  • Ngày trúng

    2

Bài đăng được đăng bởi NDBNGO


  1. Chào bạn NDBNGO,

    Lỗi của bạn là do cái hàm fix của lisp nó gây ra. Vì sao thì bạn chịu khó hỏi thằng Autodesk chứ mình cũng không giải thích được bạn ạ.

    Để khắc phục cái lỗi này, mình dùng kiểu cắt chuỗi.

    Bạn xài thử xem nhé. Nhớ là khi nhập chuỗi thì bạn phải nhập đúng định dạng mà bạn đã post, tức là sử dụng dấu chấm thập phân và phần thập phân có 4 chữ số bạn nhé. Nếu không líp nó chê xấu giai nó không cưới đâu. Cô nàng này đỏng đảnh lắm.

    Như vậy nó cũng khắc phục được luôn cái lỗi như của lisp bác Tue_NV đã viết tức là 199.0299 sẽ thành 199 02 99 chứ không phải 199 2 99.

    Bạn thử coi sao nhé.

    (defun c:doit ()
    (setq txt (getstring "\n Nhap text can doi: "))
    (if (not (wcmatch txt "*.####"))
      (alert "\Text sai dinh dang, hay lam lai")
      (progn
             (setq n (strlen txt)
                     i 0)
             (repeat n
                    (if (= (substr txt (1+ i) 1) ".")
                        (setq k (1+ i))
                    )
                    (setq i (1+ i))
             )
             (setq t1 (substr txt 1 (1- k))
                     t2 (substr txt (1+ k) 2)
                     t3 (substr txt (+ 3 k) 2)
                     txt (strcat t1 " " t2 " " t3)
             )
        )
    )
    )
    

    Chúc bạn vui.

    Nếu có gì chưa vừa ý thì hãy post lên nhé để mình hoàn thiện nó.

     

    À mà quên mất, nếu bạn đã có một list các góc theo đúng dịnh dạng trên thì bạn có thể sử dụng (setq txt (nth 0 LL1)) thay cho (setq txt (gestring .....)).

    Đoạn lisp mà mình viết ,là 1 chương trình con trong cả 1 chương trình về lisp về lisp đã hoàn thiện ,mình chỉ thay 1 số định dạng để cho phù hợp .Vây bạn có thể viết trực tiếp thêm đoạn lisp của TUE_NV để kêt quả ra đúng được không.

    Cảm ơn nhiểu.


  2. Đó là 1 lỗi khó hiểu của Lisp.

    Bác thử cái này nhé :

    (setq a ( nth 0 LL1))

    (setq b (atof a))

    (setq c (fixR B ))

    (setq d (prefix0 C))

     

    (setq e (- b (fixR B )))

    (setq e1 (* e 100))

    (setq e2 (fixR e1))

    (setq e3 (prefix0 e2))

    (setq g (- e1 (fixR e1)))

    (setq g1 (* g 100))

    (setq g2 (fixR g1))

    (setq g3 (prefix0 g2))

    ;;;;;

    (defun fixR (s) (fix(atof(rtos s))))

    (defun prefix0 (s)

    (if (< s 10)

    (strcat "0" (itoa s))

    (itoa s)

    )

    )

    Về lý thuyết thì khi thêm đoạn mã của bạn vào thì sẽ thêm số o đằng trước những số nhỏ hơn 10 ,nhưng thực tế mình cho vào chạy kết quả vẫn như cũ ,nghĩa là số o không được hiện thị.


  3. Của bác đây. Bác thử xem có đúng không nhé.

     

    (setq a ( nth 0 LL1))

    (setq b (atof a))

    (setq c (fixR B ))

    (setq d (rtos C 2 0 ))

    (setq e (- b (fixR B )))

    (setq e1 (* e 100))

    (setq e2 (fixR e1))

    (setq e3 (rtos e1 2 0))

    (setq g (- e1 (fixR e1)))

    (setq g1 (* g 100))

    (setq g2 (fixR g1))

    (setq g3(rtos g2 2 0))

    ;;;;;

    (defun fixR (s) (fix(atof(rtos s))))

     

    Tue_NV chỉ thay hàm fix của Lisp bằng hàm fixR do mình định nghĩa

    :undecided:

    Cảm ơn bạn ,kết quả ra đúng ,nhưng mình không hiểu sao nếu không có hàm fixR của bạn thì kết quả lại sai.

    Mình muốn viết thêm gì để kết quả như 199.0200 như bây giờ là 199 2 0 trở thành được 199 02 00

    Nhờ bạn chỉ dẫn.


  4. Không dùng cách của ban được góc của mình bản thân là độ phút giây rối ,viết liên nhau cách nhau 1 dâu chấm giữa độ . phutgiay liền . Đoạn mã mình đã tách thành 3 (ví dụ 123.4553 thành 123 45 53 ) nhưng sao đoạn mã của mình lại xẩy ra trường hợp 123.4500 chương trình lại tách ra là 123 44 99 .

    Bạn xem và sửa giúp mã của mình với.

    Mình cần thay đổi định dạng mà thôi

    Cảm ơn


  5. Mình viết như này, bạn tham khảo thêm nhé :

    ;;;Doi so lieu goc dang do/thap phan sang 
    (defun deggoc (a)
     (setq do (float (fix a)))
     (setq b (* (- a do) 60))
     (setq phut (float (fix b)))
     (setq giay (* (- b phut) 60))
     (+ do (/ phut 100.0) (/ giay 10000.0))
    );_ end of defun
    ;;Doi  sang do/thap phan
    (defun gocdeg (goc / ph phut giay do)
     (setq do (fix goc))
     (setq ph (* (- goc do) 100.0))
     (setq phut (fix (+ ph 0.0001)))
     (setq giay (* (- ph phut) 100.0))
     (setq goc (+ (/ (+ (* phut 60.0) giay) 3600.0) do))
     goc
    );_ end of defun

    @: Còn cái bộ mặt cười mình cũng từng bị. Bạn click không sử dụng emoticons là đc.

    Bạn chưa hiểu đúng ý mình rồi ,đây là từ giá trị đo đã đúng là độ phút giây d ' '" nhưng được viết dưới dang format 125.5345 (Nghĩa là 145d 53'45" ) mình muốn viết các giá trí độ ,phút ,giây thành các biến riêng để khi xuât ra sẽ la 145 53 45 sử dụng trong chương trình của mình .

    Nghĩa là thay đổi định dạng khi xuất chương trình thì 125.5345 thành 125 53 45 nghĩa là cách ra thành các biến riêng cơ.

    Sau đó mình ghép thành chuỗi

    (write-line (strcat "d" "e3" "g3" ).

    Cảm ơn vì đã quan tâm.

    Bạn xem lại đoạn mã của mình ở trên cần sửa như thế nào vì mình không đổi đơn vị góc như ý bạn.


  6. Mình viết như này, bạn tham khảo thêm nhé :

    ;;;Doi so lieu goc dang do/thap phan sang 
    (defun deggoc (a)
     (setq do (float (fix a)))
     (setq b (* (- a do) 60))
     (setq phut (float (fix b)))
     (setq giay (* (- b phut) 60))
     (+ do (/ phut 100.0) (/ giay 10000.0))
    );_ end of defun
    ;;Doi  sang do/thap phan
    (defun gocdeg (goc / ph phut giay do)
     (setq do (fix goc))
     (setq ph (* (- goc do) 100.0))
     (setq phut (fix (+ ph 0.0001)))
     (setq giay (* (- ph phut) 100.0))
     (setq goc (+ (/ (+ (* phut 60.0) giay) 3600.0) do))
     goc
    );_ end of defun

    @: Còn cái bộ mặt cười mình cũng từng bị. Bạn click không sử dụng emoticons là đc.

    Bạn chưa hiểu đúng ý mình rồi ,đây là từ giá trị đo đã đúng là độ phút giây d ' '" nhưng được viết dưới dang format 125.5345 (Nghĩa là 145d 53'45" ) mình muốn viết các giá trí độ ,phút ,giây thành các biến riêng để khi xuât ra sẽ la 145 53 45 sử dụng trong chương trình của mình .

    Nghĩa là thay đổi định dạng khi xuất chương trình thì 125.5345 thành 125 53 45 nghĩa là cách ra thành các biến riêng cơ.

    Sau đó mình ghép thành chuỗi

    (write-line (strcat "d" "e3" "g3" ).

    Cảm ơn vì đã quan tâm.

    Bạn xem lại đoạn mã của mình ở trên cần sửa như thế nào vì mình không đổi đơn vị góc như ý bạn.


  7. Mình cần chuyển đổi định dạng góc đo ví dụ 145.2345 (tức là 145d23'45") thành dang 145 23 45 .nghĩa là độ là 1 biến phút 1 biến giây 1 biến.Mình đã viêt thử (tập viết ) như sau:

    phần (nth 0 ll1) lấy là giá trị góc 45.2354

    ;;;Chuyển định dạng góc đo

    (setq a ( nth 0 LL1))

    (setq b (atof a))

    (setq c (fix B))

    (setq d (rtos C 2 0 ))

    ;;; nhập phan phut

    (setq e (- b (fix B)))

    (setq e1 (* e 100))

    (setq e2 (fix e1))

    (setq e3(rtos e2 2 0))

    ;;; nhập phan giay

    (setq g (- e1 (fix e1)))

    (setq g1 (* g 100))

    (setq g2 (fix g1))

    (setq g3(rtos g2 2 0))

    nghĩa là góc sẽ la "d" "e3 " " g3".

    Nhưng khi chạy thì các trường hợp đều đúng ,trường hợp duy nhất là góc có phần giây là 00 (ví dụ 45.2300 thì chương trình hiểu là 45 22 99.

    Nhờ các bạn xem lỗi do đâu và viết cho gọn và trực quan hơn thì viết thế nào.

    Mình không hiểu sao chữ b copy vào diễn đàn lại biến thành bộ mặt .

    Xin cảm ơn.


  8. Thực tế hiện nay,tiếng anh gần như là ngôn ngữ cần cho mọi cán bộ kỹ thuật,do vậy việc đặt ra cad tiếng Việt là không hợp lý và đẩy lùi sự tiến bộ của khoa học vì chuyển tải qua ngôn ngữ dich thì tiếng việt thiếu và chưa có.

    Tốt nhất là sử dụng tiếng anh ,vừa giỏi cad vừa nắm được tiếng anh chuyên ngành.

    2 cán bộ kỹ thuạt như nhau về chuyên môn ,người biết ngoại ngữ được trả gấp 2 hoặc nhiều hơn nữa.Để hiểu được thì chỉ cần 1-2 ngàn từ.Học 1ngày 30 tuef thì sau vài tháng đã sử dụng được.Vậy nên o đặt ra vấn đề dó nữa bạn ạ.

    Win,office tiếng Việt có cũng có ai dùng đâu.


  9. Xin cảm ơn,các ban còn nhớ đến mình.Đợt này đang chỉ đạo công trình ở Yên tử ,sóng yếu quá 3G không online được.Chứ nhớ các ban và diễn đàn hơn nhớ người yêu đó.

    Thỉnh thoảng cũng phải đi làm kiếm lấy 30-40 tr /tháng để láy lương khô ngồi học chú.

    Đêm ngày ôm lísp hơn cả ôm vợ đấy .Sao vài 3 tháng nữa kiến thức bằng 1/10 Phamthanhbinh là ngôi chơi cũng đủ tiền nuối cả nhà rồi

    Cảm ơn các ban lần nữa.

    • Vote tăng 1

  10. Tôi là trắc dia và rất hiểu câu hỏi đó ,tôi đã làm theo đúng yêu cầu cho họ là các đối tượng explode bị vơ( Text cao độ) .trở thành đối tượng riêng lẻ và đúng trên màn hình.

    Đó là các đối tượng text bị tách làm phần ,chồng đè lên nhau (Bản gốc ) khi đánh tân . tôi đã biến các text này thành text sử lý được và đúng tỷ lệ 1/500 chiều cao chữ là 1.1.Tôi đã explode giúp hộ .

    • Vote tăng 1

  11. Em hiểu nhầm ý anh rồi.Để làm như trường hợp 1 thì dùng lệnh tim kiếm và thay thế được ngay

    Phần 2 thi cắt không đúng :

    Ý anh như thế này mà

    một dòng có ghi là c1+32.5 Cống tả THi mình tách ra làm 2 chuỗi là c1+32.5 và Cống tả .

    Từ dòng có c1+32.5m Cống tả ta cắt chuỗi để trở thành file mới có chữ cống tả thôi.

    Không phải là bỏ khoảng trắng mà cắt ký tự từ khoảng trắng đầu tiên

    Rất mất thời gian của em .em thông cảm nhé


  12. -Quy ước _ là dấu cách:

    -Cho chuổi gốc như sau: _đfgshf_đsfsjfhsdfjfsfsđjfks anh muốn kết quả như nào:

    +đfgshf_đsfsjfhsdfjfsfsđjfks

    +đsfsjfhsdfjfsfsđjfks

    -File xuất ra vị trí nào tự tạo trong cùng thư mục hay hỏi chọn thư mục hay mặc định thư mục?

    Dấu cách là được rồi.

    Cho ra cả 2 dạng.

    Thư mục do người dùng chỉ định


  13. Mình nói nó gần như hoàn thiện nên tich hợp thêm các tính năng cho nó mà,bạn đọc hết đi.Do chương trình của bạn mình nên mình đang sử dụng tốt ,hiệu quả ,1 số phần chưa khai thác được thì viết lại và nâng cao.Chứ nếu bạn mình còn thì chắc mình không bao giờ phải nghĩ đên học viết gì cả.

    Vì 1 ý tưởng của mình anh ấy có thể biến nó thành rất nhiều cái mà mình chưa nghĩ đến.


  14. Mình không cần biết họ làm bằng gì nhưng có thể làm mọi điều theo ý bạn muốn với bạn vẽ này.Không phải cần cao thủ đâu,trẻ con cũng làm được mà.

    Bạn muốn cao độ thành text như thế nào cũng được cả.bạn cho đầu bài đi 10 phút làm lại cho bạn.

    Gửi bạn file đã sửa:

    http://www.4shared.com/photo/Sr8ht1Ap/bd1500_bai_racmoi.html

     

    Ngô Đông Phương 0988529640


  15. Tạo ra 2 hay nhiều file toa độ đó là điều cực kỳ đơn giản với chương trình này.Chỉ cần pick chuột vào các vị trí ,chương trình sẽ tự động đáng só và xuất ra file. nếu tao 1 file 1000 điểm không quá 10 phút.Vì đây là 1 chương trình với hàng 100 tính năng cho trắc địa làm từ đầu đến cuối,có thể nói hiệu quả rất cao. Mình đã bỏ tiền ra mua nhiều chương trình (Topo,nova...500USD ) nhưng rồi đều bỏ không vì không đọ được vì tính chất dễ truyền dạy và hiệu quả của chương trình mình đang dùng. Nhưng mình đã nói chương trình này gần như hoàn thiện .

    Mình hiện làm chủ nhiệm khảo sát gần như toàn bộ các loại công trình sân bay ,cầu cảng ,giao thông,thủy lơi,quy hoạch ... trong các đơn vị tư vấn nên cũng có điều kiện giao lưu trao đổi nhiều.

    Vậy nên chỉ tích hợp thêm các tính năng để nó hoàn hảo hơn mà thôi,còn khi minh có thể viết theo ý mình thì sẽ tính sau.

    Gửi Duy782006.

    Khi mình chuyển sang 1 dạng text khác thì đều đã nhận được đúng số dòng,số bản vẽ nhưng khi các bản vẽ xuất ra lại không theo thứ tự dòng .Em xem do nguyên nhân gi vây nhé.

    Gửi file cho em:

    http://www.4shared.com/photo/DqEBUVp2/ghichumoi.html

    Cảm ơn tất cả.


  16. em muốn xuất file cad ra góc cạnh dể làm sổ bác nào có lisp giúp em với em cảm ơn nhiều

    mail cua em la tracdia360@gmail.com

    Với đề nghị đó cả điễn đàn này không trả lời và hiểu được ý của em( Trừ 1 số anh em trắc địa thì không viết).

    Thứ nhất khái niệm góc, cạnh .Góc là tạo bởi 3 điểm ,cạnh là giứa 2 điểm .Vạy với nhiều điểm như bản vẽ thì có đên n giai thừa góc và cạnh.Riêng máy tính không chạy nổi cái file như thế.

    Còn với file đó thì cả trái đất này cũng o làm được vì đặt ra 1 bài toán phi lý ,em đọc lại kiến thức trắc địa phổ thông đi nhé.

    Để bịa só liệu thì cả diễn đàn này đều phản đối và không ai viết cả.

    Với trình độ chuyên môn lơ mơ về trắc địa như thế làm thật còn o xong ,sao đã nghĩ đến mông má ,bịa số liệu.

    Mong bạn thông cảm.


  17. Em viết cho đoạn cắt text như anh đề nghị ở trên được không.Nghĩa là nhiều khi nội dụng sau vẫn giữ nguyên bản vẽ này nhưng lại cắt bỏ đạo đầu ở bản vẽ khác.

    Cách nhau chỉ 1 dấu cách.

    Líp vừa rồi chạy rất tốt nếu các hàng là các số thứ tự,nhưng là các dòng text hay mtext thì chạy ra hàng 18,20 bản dù bản gốc chỉ có 4,5 hàng.

    Cảm ơn.


  18. Gửi duy782006

    Nên tạo 1 thư mục riêng D:/chen/*.dwg để dễ quản lý.

    Đấnh tử dòng đầu đễn dòng cuối .Mình sử hàm (+ i 1) thành ( -i x) x là số dòng ,nhưng thủ công quá phải đếm.

    Chắc phải cậc lực vài tháng mới hiểu được chương trình của các bạn được.

    Vì tính năng ghi text này chỉ trong 1/100 tính năng của tiện ích nầy nên mình phải tận dụng ,sau đủ kiến thức mới viết sau.Phải loại bỏ toàn bổ toàn bộ các chương trình ngoài tác động vào cad ,rất tiếc nhưng o thể vì nếu thế, thì mãi chắp vá mà thôi.

    Mình muốn thêm tính năng cắt bỏ chữ nữa thì có thể được không(có thể viết chương trình riêng) vị dụ

    C32+ 54 Cống bỏ.

    C22+45.6 Đường ngang.

    ....

    có thể cắt loại bỏ text từ trước đấu cách thành

    Công bỏ

    Đường ngang

    ....

    Nghĩa là đọc 1 file text có các text theo hàng ,khi dùng lệnh DEfun C: deltext sẽ loại bỏ các chữ trước dấu cách

     

    Cảm ơn Duy.

×